通过对另一个矩阵的行求和来在R中创建新矩阵

Joã*_*lho 5 r matrix

所以我有以下矩阵(让我们称之为输出):

> output

     [,1] [,2] [,3] [,4] [,5] [,6] 
[1,]   1    1    1    0    0    1
[2,]   1    1    1    0    0    1
[3,]   1    1    1    0    0    1
[4,]   0    0    0    0    0    0
[5,]   1    0    1    1    0    0 
[6,]   1    0    1    1    0    0
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过以两个为一组添加行来创建一个新矩阵(output2).例如,新矩阵的第一行将是:

output2[1,] <- output[1,] + output[2,]
Run Code Online (Sandbox Code Playgroud)

新矩阵output2的第二行将包含旧输出矩阵的第三行和第四行的总和:

output2[2,] <- output[3,] + output[4,]
Run Code Online (Sandbox Code Playgroud)

等等.我想知道什么是最好的编码方式,考虑到我需要对更大的矩阵做同样的事情.我正在考虑用seq()函数创建虚拟变量,也许是for循环.

有更简单的方法吗?

编辑:

dput(输出)

结构(c(1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 0,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1 0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0, 0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0, 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,1,1, 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0),. Dim = c(10L,19L))

nic*_*ola 1

如果m是你的矩阵,试试这个:

m[seq(1,by=2,to=nrow(m)),]+m[seq(2,by=2,to=nrow(m)),]
Run Code Online (Sandbox Code Playgroud)