所以我有以下矩阵(我们称之为输出):
> 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
我想要做的是通过以两个为一组添加行来创建一个新矩阵(输出 2)。例如,新矩阵的第一行是:
output2[1,] <- output[1,] + output[2,]
新矩阵 output2 的第二行将由旧输出矩阵的第三行和第四行之和组成:
output2[2,] <- output[3,] + output[4,]
等等。我想知道什么是最好的编码方式,考虑到我需要对更大的矩阵做同样的事情。我正在考虑使用 seq() 函数和 for 循环创建虚拟变量。
有没有更简单的方法?
编辑:
dput(output)
结构(c(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1,
1, 0, 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, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 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, 1, 0,
0, 0, 0, 0, 0), .Dim = c(10L, 19L))
最佳答案
如 m
是你的矩阵,试试这个:
m[seq(1,by=2,to=nrow(m)),]+m[seq(2,by=2,to=nrow(m)),]
关于r - 通过对另一个矩阵的行求和在 R 中创建新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47514565/