So I have taken a look at this question posted before which was used for summing every 2 values in each row in a matrix. Here is the link: sum specific columns among rows. I also took a look at another question here: R Sum every k columns in matrix which is more similiar to mine. I could not get the solution in this case to work. Here is the code that I am working with...
y <- matrix(1:27, nrow = 3)
y
m1 <- as.matrix(y)
n <- 3
dim(m1) <- c(nrow(m1)/n, ncol(m1), n)
res <- matrix(rowSums(apply(m1, 1, I)), ncol=n)
identical(res[1,],rowSums(y[1:3,]))
sapply(split.default(y, 0:(length(y)-1) %/% 3), rowSums)
I just get an error message when applying this. The desired output is a matrix with the following values:
[,1] [,2] [,3]
[1,] 12 39 66
[2,] 15 42 69
[3,] 18 45 72
Transform the matrix to an array and use
colSums
(as suggested by @nongkrong):Of course this assumes that
ncol(y)
is divisible byn
.PS: You can of course avoid creating so many intermediate objects. They are there for didactic purposes.
To sum consecutive sets of
n
elements from each row, you just need to write a function that does the summing and apply it to each row:I would do something similar to the OP -- apply
rowSums
on subsets of the matrix: