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

时间:2017-12-19 00:22:35

标签: r data.table

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

id = findViewById(R.id.textOne1);
name = findViewById(R.id.textTwo2);
id.setText(getIntent().getIntExtra("MobileId"));
name.setText(getIntent().getStringExtra("MobileName"));

表中的结果如下:

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

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

这样的事情
ave  std scenario1 scenario2 scenario3
 20  0.1   20.2377   20.2377   20.2377
  3  1.0    2.6497    2.6497    2.6497

或使用matrix(rnorm(6, ave, std), 2, 3) 但似乎都不起作用。

2 个答案:

答案 0 :(得分:0)

您可以为每列调用rnorm

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

答案 1 :(得分:0)

我们可以使用replicate

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