R中data.table中的一组列的乘积

时间:2019-01-09 21:22:52

标签: r data.table

我有一个如下所示的数据表

> temp = data.table(A = runif(10), B = runif(10), C = runif(10))
> temp
            A         B          C
 1: 0.9780187 0.3706999 0.38986569
 2: 0.3614894 0.4578619 0.47973024
 3: 0.1974928 0.2198876 0.79985610
 4: 0.2509917 0.7791180 0.13150595
 5: 0.5975064 0.1469739 0.78714248
 6: 0.7823076 0.1806161 0.04970207
 7: 0.9637526 0.4106579 0.63153566
 8: 0.6985434 0.5870737 0.53784899
 9: 0.9755159 0.1097774 0.18338828
10: 0.5010543 0.9847809 0.99354549

我想计算所有这些列的乘积。我该如何使用data.table做到这一点?

1 个答案:

答案 0 :(得分:2)

对于data.table.SD表示Data.table的子集。如果我们没有指定要在.SDcols中选择的任何列,那么它就是整个数据集。将Reduce*结合使用,可以对数据集每一列的对应元素进行乘法运算

temp[, Reduce(`*`, .SD)]

为每一行提供一个vector乘数值

如果要在数据集中创建一列,请将其分配(:=到新列中

temp[, prodCol := Reduce(`*`, .SD)]