我需要应用一个滚动函数来对每两列的行求和,因此第1列和第2列的行将相加,3和4等。
m<-matrix(c(1,2,3,4,5,3,4,5,6,2,4,6,6,7,3,2,4,4,5,7),nrow=2,byrow=T)
我已经查看了许多函数,包括apply,rollapply,aggregate等,但似乎找不到滚动对指定列的行进行求和的函数。
我能够长期编写代码,但是我正在寻找一种最有可能涉及功能的有效解决方案。
sum1<-(m[,1]+m[,2])
sum2<-(m[,3]+m[,4])
sum3<-(m[,5]+m[,6])
sum4<-(m[,7]+m[,8])
sum5<-(m[,9]+m[,10])
cbind(sum1,sum2,sum3,sum4,sum5)
谢谢!
答案 0 :(得分:1)
您可以使用此方法:
m[,seq(1, ncol(m),2)] + m[,seq(2, ncol(m), 2)]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 3 7 8 9 8
#[2,] 10 13 5 8 12
答案 1 :(得分:0)
另一种方法是将m
转换为3维数组,然后对列进行求和:
> X <- m
> dim(X) <- c(2,2,5)
> colSums(aperm(X, c(2,1,3)))
[,1] [,2] [,3] [,4] [,5]
[1,] 3 7 8 9 8
[2,] 10 13 5 8 12