2015-07-17 25 views
5

Veri tablosundaki her satır için runif kullanarak rasgele bir sayı oluşturmak istiyorum. Ne yazık ki her satırda aynı sayıya ulaşırım.data.table içinde bir sütun hesaplamak için runif'i kullanın.

require(data.table) 
dx <- data.table(min=1:10, max=seq(10,100,10)) 
dx[, sum:=min+max] 
dx[, runif:=runif(n=1,min,max)] 

> dx 
    min max sum runif 
1: 1 10 11 5.086488 
2: 2 20 22 5.086488 
3: 3 30 33 5.086488 
4: 4 40 44 5.086488 
5: 5 50 55 5.086488 
6: 6 60 66 5.086488 
7: 7 70 77 5.086488 
8: 8 80 88 5.086488 
9: 9 90 99 5.086488 
10: 10 100 110 5.086488 

Neden runif bu şekilde davranıyor, ancak ekleme düzgün çalışıyor? Birisi, bu satır için tekdüze olarak dağıtılmış rasgele bir sayı oluşturmak için her satırdaki min ve maksimun nasıl kullanılacağını önerebilir mi?

cevap

11

Sadece

dx[, runif := runif(.N, min, max)] 

yeter bence. n=1'u ayarlayarak, tekil değerinin oluşturulmasını talep etmiştiniz ve bu da uygun uzunlukta geri dönüştürülmüştür. min ve max hala uygun, vectorized şekilde ele alınır.

+0

Kanım için çok hızlısın Ben! –

İlgili konular