R.计算行中的值与其他列的值置换n次的乘积

R. Compute product of value in row by permutated value of other column n times

我有一个这样的数据框(1000000 行):

A    B    C
a    0.2  4 
b    0.8  7
c    1    8
d    0.2  1
e    0.6  9

我想将 B 中的每个值乘以从 C 中获取的随机数(无替换排列),为每一行生成一个新值 x。然后我想对所有 x 值求和以获得新行 y。重复此 n 次。我的数据框中不需要 xn 列,只需要一个带有 yn 值的向量。

我会得到这样的结果(2 次迭代):

A    B    C    x1           x2        .... xn
a    0.2  4    0.2*1=0.2    0.2*4=0.8
b    0.8  7    0.8*8=6.4    0.8*9=0.72
c    1    8    1*7=7        1*1=1
d    0.2  1    0.2*9=1.8    0.2*7=1.4
e    0.6  9    0.6*4=2.4    0.6*8=4.8
y              17.8         8.72      .... yn

使用 replicate 在这里有帮助:

n <- 10
(y <- with(df, replicate(sum(B * sample(C)), n = n)))
# [1] 16.4 16.4 18.0 17.8 14.2 14.2 18.0 20.4 15.2 19.8

如果有放回抽样是一种选择,则可以通过生成 C 值的单个大型矩阵然后使用 colSums.

来加快速度