将共享相同因子的矩阵的每一行相乘
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)
我在 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)