R很新,我有一个.rda文件,其中包含基因ID矩阵和96列中每个ID的计数。它看起来像这样:
我想获得每列中非零项数量的单独计数。我一直在循环中尝试sum()函数,但也许我不理解R中的循环语法。任何帮助表示赞赏。 谢谢!
森林
答案 0 :(得分:48)
怎么样:
apply(your.matrix, 2, function(c)sum(c!=0))
这有帮助吗?
修改强>
更好:
colSums(your.matrix != 0)
编辑2:
这里我们以ya:
为例> example = matrix(sample(c(0,0,0,100),size=70,replace=T),ncol=7)
> example
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0 100 0 0 100 0 100
[2,] 100 0 0 0 0 0 100
[3,] 0 0 0 0 0 0 100
[4,] 0 100 0 0 0 0 0
[5,] 0 0 100 100 0 0 0
[6,] 0 0 0 100 0 0 0
[7,] 0 100 100 0 0 0 0
[8,] 100 0 0 0 0 0 0
[9,] 100 100 0 0 100 0 0
[10,] 0 0 0 0 0 100 0
> colSums(example != 0)
[1] 3 4 2 2 2 1 3
(新示例,前面带有'1'值的示例不适合显示我们正在对单元格的数字求和,而不是它们的内容)
答案 1 :(得分:2)
使用plyr
的{{1}}:
numcolwise
答案 2 :(得分:2)
其中x
是列或向量;
length(which(x != 0))