2016-04-04 9 views
-1

Ich möchte ein data.frame mit der QuickCheck R library generieren. Der data.frame muss einige nicht-zufällige benannte Spalten haben, die einen bestimmten Typ haben müssen. Wenn Sie rdata.frame ausführen, erhalten Sie einen völlig zufälligen Datenrahmen mit Spaltennamen wie col.1, col.2, ..., die nicht das Ziel ist.Wie generieren Sie einen Datenrahmen mit bestimmten Eigenschaften in QuickCheck

Zum Beispiel hat der Datenrahmen unten zwei Spalten (x und y) mit den Typen integer und factor.

> data.frame(x=1:10, y=rep(F, 10)) 
    x  y 
1 1 FALSE 
2 2 FALSE 
3 3 FALSE 
4 4 FALSE 
5 5 FALSE 
6 6 FALSE 
7 7 FALSE 
8 8 FALSE 
9 9 FALSE 
10 10 FALSE 

Ich könnte so etwas wie

> data.frame(x=rinteger(size=~10), y=rlogical(size=~10), z=rdouble(size=~10)) 
    x  y   z 
1 -94 FALSE 7.124120 
2 -64 FALSE -47.855625 
3 -87 FALSE -9.622184 
4 -9 FALSE -28.678583 
5 -78 TRUE 35.932244 
6 -96 TRUE 116.449312 
7 -63 TRUE 51.389978 
8 65 TRUE -65.566058 
9 71 FALSE 248.323594 
10 -76 TRUE 138.238654 

tun, das das erwartete Format (eine data.frame mit den richtigen Spaltennamen mit zufälligen Daten eines bestimmten Typs) erzeugt. Aber es scheint mir, dass es einen besseren Weg geben muss, da die Anzahl der Zeilen hier unwichtig ist.

Es ist ziemlich üblich, dass ein data.frame bestimmten Eigenschaften als Eingabe für Funktionen entspricht, leider ist die Dokumentation in diesem Teil wirklich kryptisch.

Bonus: Wie verschmelzen Sie in bestimmten konstanten Werten mit diesem data.frame? (z.B. eine Spalte u mit Werten alle 0, zusätzlich zu den zufällig erzeugten Daten).

+1

Ihre Frage ist ziemlich kryptisch. Ich verstehe nicht, was du eigentlich fragst. – Roland

+0

Ich möchte quickcheck ein data.frame mit einigen nicht-zufälligen benannten Spalten mit zufälligen Inhalten eines bestimmten Typs (z. B. numerische/Faktor usw.) zu generieren. Ich werde sehen, ob ich es besser formulieren kann. – JoelKuiper

+0

Eine Sache, die ich vorschlagen möchte, ist zu erklären, was Sie unter "die Anzahl der Zeilen ist unwichtig" verstehen. Möchten Sie es zufällig auswählen? – piccolbo

Antwort

1
library(quickcheck) 
library(functional) 
nr = rsize() # random number of rows 
generators.nr = 
    lapply(
    list(ri = rinteger, rd = rdouble, rl = rlogical), #all the ones you need 
    Curry, 
    size = ~nr) 
with(
    generators.nr, 
    data.frame(x = ri(), y = rd(), z = rl(), w = 1))