计算每列的非零元素数

For*_*est 23 r

对R来说很新,我有一个.rda文件,其中包含基因ID矩阵和96列中每个ID的计数.它看起来像这样:

在此输入图像描述

我想获得每列中非零项数量的单独计数.我一直在循环中尝试sum()函数,但也许我不理解R中的循环语法.任何帮助表示赞赏.谢谢!

森林

Jea*_*lie 51

关于什么:

apply(your.matrix, 2, function(c)sum(c!=0))
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

编辑:

更好的是:

colSums(your.matrix != 0)
Run Code Online (Sandbox Code Playgroud)

编辑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
Run Code Online (Sandbox Code Playgroud)

(新的例子,前面带有'1'值的例子不适合表明我们正在计算单元格的数量,而不是它们的内容)

  • 这应该工作.`c!= 0`是一个TRUE或FALSE的向量,它被`sum(...)`强制转换为1或0.所以每当c!= 0时你就加1,这给出了非零元素的数量. (2认同)

小智 5

x作为一个柱或载体;

length(which(x != 0))