2016-04-04 15 views
-1

içinde belirli özelliklere sahip bir veri çerçevesini nasıl oluşturursunuz QuickCheck R library kullanarak bir data.frame oluşturmak istiyorum. Data.frame, belirli türde olması gereken rasgele olmayan adlandırılmış sütunlara sahip olmalıdır. rdata.frame çalıştırdığınızda, hedef değil, col.1, col.2, ... gibi sütun adları ile tamamen rasgele bir data.frame olsun. Örneğin, aşağıdaki veri çerçevesinin tamsayı ve katsayı türlerine sahip iki sütun (x ve y) vardır.QuickCheck

> 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 

ben beklenen formatını (belirli bir türde rasgele veri ile doğru sütun adlarını içeren bir data.frame) üretir

> 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 

gibi bir şey yapabilirdi. Ama bana göre daha iyi bir yol olmalı, çünkü burada satır sayısı önemsiz.

İşlevler için girdi olarak belirli özelliklere bağlı bir data.frame'e sahip olmak oldukça yaygındır, maalesef bu kısımdaki belgeler gerçekten şifrelenir.

Bonus: Bu data.frame ile belirli sabit değerlerde nasıl birleşiyorsunuz? (ör. rastgele oluşturulmuş verilere ek olarak bütün 0 değerlerine sahip bir sütun u).

+1

Sorunuz oldukça şifreli. Ne sorduğunu anlamıyorum. – Roland

+0

Belirli bir türde rastgele içeriklere sahip rasgele adlandırılmış bazı sütunlara sahip bir data.frame oluşturulmasını hızlı bir şekilde kontrol etmek istiyorum (örneğin sayısal/faktör vb.). Onu daha iyi formüle edip edemeyeceğimi göreceğim. – JoelKuiper

+0

Önermek istediğim bir şey "satır sayısı önemsiz" ile ne demek istediğini açıklamaktır. Onu randomize etmek ister misiniz? – piccolbo

cevap

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))