R - 从矩阵返回成对选定行的colSums

时间:2015-12-09 16:06:13

标签: r matrix

很抱歉,如果这个问题已在某个地方被问过,但搜索对我没有帮助。 首先,我是一个真正的编程初学者,我一直在努力计算可能是什么,基本的......

基本上我所拥有的是一个14x265矩阵,填充0和1。 对于这个矩阵,我想计算并返回所有成对选定行的colSums。

例如 我们来看矩阵

1 0 1 0    
0 1 1 1
0 0 0 1

我希望以下内容返回给我(矩阵3x5):

1-2 1 1 2 1    
1-3 1 0 1 1
2-3 0 1 1 2

我完全不知道该怎么做。 我正在使用'combn'和'apply'函数,但到目前为止还没有成功。

有人能帮助我吗?

提前致谢! 尼克

1 个答案:

答案 0 :(得分:2)

使用您的样本矩阵

mm<-structure(c(1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L), .Dim = 3:4)

您可以使用apply()

t(apply(combn(nrow(mm),2),2, function(i) {
    colSums(mm[i,])
}))

     [,1] [,2] [,3] [,4]
[1,]    1    1    2    1
[2,]    1    0    1    1
[3,]    0    1    1    2

如果你想添加标签

cx <- combn(nrow(mm),2)
data.frame(
    pair=apply(cx,2, paste, collapse="-"),
    t(apply(cx,2, function(i) {
        colSums(mm[i,])
    }))
 )
#   pair X1 X2 X3 X4
# 1  1-2  1  1  2  1
# 2  1-3  1  0  1  1
# 3  2-3  0  1  1  2