将共享相同因子的矩阵的每一行相乘

Multiply each row of a matrix which share same factor

我在 R 中有一个如下形式的矩阵。第一列是唯一值,由 0 共享

      [,1] [,2]
[1,]    1    4
[2,]    1    2
[3,]    2    3
[4,]    2    5
[5,]    3   10

结果应如下所示:

     [,1] [,2]
[1,]    1    8
[2,]    2   15
[3,]    3   10

我一直在网上寻找一些时间,但无法在没有子集的情况下找到这个 'simple' 问题的答案。谢谢

一个简单的选项是 aggregate

aggregate(. ~ V1, as.data.frame(m1), FUN = prod)
#   V1 V2
#1  1  8
#2  2 15
#3  3 10

tidyverse

library(dplyr)
library(tibble)
as_tibble(m1) %>% 
   group_by(V1) %>% 
   summarise_all(prod)

split

sapply(split(m1[,2], m1[,1]), prod)