通过data.table(R)中的组有效地生成随机变量

时间:2015-05-26 18:11:58

标签: r data.table

我有以下示例数据,我正在尝试按大量组创建随机数,但这需要花费太多时间。我想知道是否有一种有效的方法:

library(data.table)
d <- mtcars
n <- 10000
k1<-rbindlist(replicate(n, d, simplify = FALSE))
k1[,factor_var:=rep(seq(1,80000),4)] #sample data
#generating random number
k1[,rand:=runif(nrow(k1),0,1),factor_var]

1 个答案:

答案 0 :(得分:2)

您可以使用此命令。

k1[, rand:=runif(.N, 0, 1), factor_var]

在R每次计算行数的意义上,使用nrow很慢。您应该事先使用.N或计算nrow,就像这样

nr <- nrow(k1)
k1[, rand:=runif(nr, 0, 1), factor_var]