R.用其他列的排列值n次计算行中值的乘积

时间:2018-11-07 22:17:07

标签: r dataframe permute

我有一个这样的数据框(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

1 个答案:

答案 0 :(得分:1)

在这里使用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来使其更快。