很抱歉,如果这个问题已在某个地方被问过,但搜索对我没有帮助。 首先,我是一个真正的编程初学者,我一直在努力计算可能是什么,基本的......
基本上我所拥有的是一个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'函数,但到目前为止还没有成功。
有人能帮助我吗?
提前致谢! 尼克
答案 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