我有一个如下所示的数据表
> 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做到这一点?
答案 0 :(得分:2)
对于data.table
,.SD
表示Data.table的子集。如果我们没有指定要在.SDcols
中选择的任何列,那么它就是整个数据集。将Reduce
与*
结合使用,可以对数据集每一列的对应元素进行乘法运算
temp[, Reduce(`*`, .SD)]
为每一行提供一个vector
乘数值
如果要在数据集中创建一列,请将其分配(:=
到新列中
temp[, prodCol := Reduce(`*`, .SD)]