我有以下示例数据,我正在尝试通过大量组创建随机数,但这花费了太多时间。我想知道是否有有效的方法:
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]
Run Code Online (Sandbox Code Playgroud)
您可以使用此命令。
k1[, rand:=runif(.N, 0, 1), factor_var]
Run Code Online (Sandbox Code Playgroud)
从 R 每次计算行数的意义上来说,使用 nrow 很慢。您应该使用 .N 或预先计算 nrow,如下所示
nr <- nrow(k1)
k1[, rand:=runif(nr, 0, 1), factor_var]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |