R中矩阵的单列中多列与行值之和

R中矩阵的单列中多列与行值之和,r,R,我有一个矩阵,比如: m <- matrix(c(1:32),ncol = 8) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 1 5 9 13 17 21 25 29 [2,] 2 6 10 14 18 22 26 30 [3,] 3 7 11 15 19 23 27 31 [4,] 4 8 12 16

我有一个矩阵,比如:

m <- matrix(c(1:32),ncol = 8)

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    5    9   13   17   21   25   29
[2,]    2    6   10   14   18   22   26   30
[3,]    3    7   11   15   19   23   27   31
[4,]    4    8   12   16   20   24   28   32
我的问题是做这件事的最好方法是什么

我取了和,用向量替换了矩阵

X<-rowSums(m[,c(1,2,3)]); m[,1] <- X; m <- m[,-c(2,3)]

X我们可以使用列的数字索引来子集并执行
行和
,然后使用
行和
中未使用的列执行
cbind

cbind(rowSums(m[,1:3]), m[, -(1:3)])
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]   15   13   17   21   25   29
#[2,]   18   14   18   22   26   30
#[3,]   21   15   19   23   27   31
#[4,]   24   16   20   24   28   32

我们可以使用列的数字索引来子集并执行
行和
,然后使用
行和
中未使用的列执行
cbind

cbind(rowSums(m[,1:3]), m[, -(1:3)])
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]   15   13   17   21   25   29
#[2,]   18   14   18   22   26   30
#[3,]   21   15   19   23   27   31
#[4,]   24   16   20   24   28   32

您还可以使用
apply
,这比
rowSums()
方法要长一些

cbind(apply(m[,-c(4:ncol(m))], 1, function(x){sum(x,na.rm=T)} ), m[,c(4:ncol(m))])

#      [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]   15   13   17   21   25   29
#[2,]   18   14   18   22   26   30
#[3,]   21   15   19   23   27   31
#[4,]   24   16   20   24   28   32

然而,
rowSums
无疑是计算速度更快的方法。

您也可以使用
apply
,这比
rowSums()方法略长一些

cbind(apply(m[,-c(4:ncol(m))], 1, function(x){sum(x,na.rm=T)} ), m[,c(4:ncol(m))])

#      [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]   15   13   17   21   25   29
#[2,]   18   14   18   22   26   30
#[3,]   21   15   19   23   27   31
#[4,]   24   16   20   24   28   32

然而,
rowSums
无疑是计算速度更快的方法。

感谢您的快速回复。我一开始是这样做的,但是对于我的大型矩阵,我花了很多时间,不亚于我在这里所做的。谢谢你的快速回复。我最初是这样做的,但我的大型矩阵需要花费大量时间,不亚于我在这里所做的。