代码之家  ›  专栏  ›  技术社区  ›  deepAgrawal

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

  •  0
  • deepAgrawal  · 技术社区  · 5 年前

    我有如下数据表

    > 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 回复  |  直到 5 年前
        1
  •  2
  •   akrun    5 年前

    data.table , .SD 指示data.table的子集。如果我们没有指定要在其中选择的任何列 .SDcols ,则是整个数据集。使用 Reduce 具有 * ,它执行数据集每列对应元素的乘法运算。

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

    给出一个 vector 每行的乘数值

    如果目的是在数据集中创建列,请( := )它变成了一个新的专栏

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