繁体   English   中英

使用runif计算data.table中的列

[英]use runif to calculate a column in data.table

我想为数据表中的每一行使用runif生成一个随机数。 不幸的是,我最终在每一行都有相同的数字。

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表现得这样,但加法效果很好? 有人可以建议如何使用每行的最小值和最大值来为该行生成均匀分布的随机数?

我想是的

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

应该这样做。 通过设置n=1您要求生成单个值,然后将其再循环到适当的长度。 minmax仍然以适当的矢量化方式处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM