首页 > 解决方案 > R中data.table中一组列的乘积

问题描述

我有一个 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 做到这一点?

标签: rdata.table

解决方案


data.table,.SD表示 Data.table 的子集。如果我们不指定要选择的任何列.SDcols,则它是整个数据集。使用Reducewith *,它会乘以数据集每一列的对应元素

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

为每一行给出一个vector相乘的值

如果打算在数据集中创建一列,请将 ( :=) 分配给新列

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

推荐阅读