2015-07-17 2 views
5

Я хотел бы создать случайное число, используя runif для каждой строки в таблице данных. К сожалению, я получаю то же число в каждой строке.использовать runif для вычисления столбца в data.table

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 

Почему runif ведет себя так, но дополнение работает просто отлично? Может ли кто-нибудь предложить, как использовать min и max для каждой строки для создания равномерно распределенного случайного числа для этой строки?

ответ

11

Я думаю, что просто

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

должны это сделать. Установив n=1, вы просили создать одно значение, которое затем было переработано на соответствующую длину. min и max все еще обрабатываются соответствующим векторизованным способом.

+0

Вы слишком быстро для моей крови, Бен! –

Смежные вопросы