2016-04-04 19 views
-1

我想使用QuickCheck R library生成數據幀。 data.frame必須有一些非隨機的命名列,它們必須具有某種類型。當你運行rdata.frame時,你會得到一個完全隨機的數據幀,列名如col.1, col.2, ...這不是目標。如何在QuickCheck中生成具有某些屬性的數據幀

例如下面的數據框有兩列(x和y),類型爲整數和因子。

> 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 

我可以做類似

> 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 

產生預期的格式(與特定類型的隨機數據的正確列名data.frame)。 但是在我看來,必須有更好的辦法,因爲在這裏行數不重要。

將數據框架作爲函數的輸入附加到某些屬性上是相當常見的,但不幸的是文檔在這個部分上真的很神祕。

獎勵:你如何合併某些常數值與這個data.frame? (例如,除了隨機生成的數據之外,還有列u的值全部爲0)。

+1

你的問題很神祕。我不明白你究竟在問什麼。 – Roland

+0

我想quickcheck生成一個data.frame與一些非隨機命名的列與隨機內容的特定類型(例如數字/因素等)。我會看看如果我能更好地制定它。 – JoelKuiper

+0

我想提出的一件事是解釋「行數不重要」的含義。你想隨機化它嗎? – piccolbo

回答

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)) 
相關問題