我正在尝试使用矢量化操作填写R中的数据表:
library(data.table)
x = 5
y = 3
Foo = data.table(Bar = 1:x)
Foo[,paste0("simulation",1:y) := Bar * rnorm(y,,Bar)]
我认为对于每一行,rnorm(y ,, Bar)会生成一个长度向量(使用该行的Bar作为标准偏差),将其乘以该行的Bar值,并填入相应的列。然而,似乎(从其他实验)首先尝试下列。有没有办法改变这种行为?
答案 0 :(得分:1)
我们可以遍历'Bar'的值并创建rnorm
Foo[, paste0("simulation",seq_len(y)) :=transpose(lapply(Bar, function(z) rnorm(y, sd = z)))]