r - 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 做到这一点?
解决方案
data.table
,.SD
表示 Data.table 的子集。如果我们不指定要选择的任何列.SDcols
,则它是整个数据集。使用Reduce
with *
,它会乘以数据集每一列的对应元素
temp[, Reduce(`*`, .SD)]
为每一行给出一个vector
相乘的值
如果打算在数据集中创建一列,请将 ( :=
) 分配给新列
temp[, prodCol := Reduce(`*`, .SD)]
推荐阅读
- c# - 如何在 Bing 地图上设置缩放级别?
- css - 翻转卡无法正常工作[可以选择另一侧的文本]
- javascript - 单次触发点击事件监听器
- terminal - 使用 MacPorts 安装 atom,但未显示在 Launchpad 或 Applications 文件夹中
- python-3.x - 熊猫:按两列分组并返回字符串列的差异
- unity3d - 如何使用脚本 Unity3D 旋转相机 *已回答* 2021 年 2 月 17 日
- javascript - CSS:幻灯片之间的 css 过渡,类似于示例
- flutter - 使用 simple_auth 包进行 Flutter Web Keyclock 登录
- winapi - 使用 Win32 API 的 XZip 库创建 zip 文件
- java - java.lang.RuntimeException:无法实例化活动 ComponentInfo - 不搜索活动