r data.table中的向量化表操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r data.table中的向量化表操作相关的知识,希望对你有一定的参考价值。

基于给定的平均值和标准偏差,我试图用各种样本运行来填充列。我现在拥有的是:

A = data.table(ave = c(20, 3), std = c(.1, 1))
A[, paste0("scenario", c(1:3)) := rnorm(2, ave, std)]

表中的结果如下:

ave  std scenario1 scenario2 scenario3
 20  0.1   20.2377   20.2377   20.2377
  3  1.0    2.6497    2.6497    2.6497

很明显,它在一个向量上运行rnorm,然后为每个列重复相同的向量。如何重新计算每列?我尝试过类似的东西

matrix(rnorm(6, ave, std), 2, 3)

或者使用transpose(lapply(...))但似乎都不起作用。

答案

您可以为每列调用rnorm

A[, paste0("scenario", c(1:3)) := lapply(1:3, function(x) rnorm(2, ave, std))]
另一答案

我们可以使用replicate

A[, paste0("scenario",c(1:3)) := replicate(3, rnorm(2, ave, std), simplify = FALSE)]

以上是关于r data.table中的向量化表操作的主要内容,如果未能解决你的问题,请参考以下文章

我们是不是需要 C++ 中的向量化或 for 循环已经足够快?

如何计算 R 中 data.table 中的出现组合

matlab类中的向量化

sklearn:文本分类交叉验证中的向量化

通过引用传递函数时处理 R data.table 中的无效 selfref

R语言data.table导入数据实战:data.table使用dcast.data.table函数实现透视表(pivot table)