Подтвердить что ты не робот

Подсчитайте количество ненулевых элементов каждого столбца

Очень новый для R, и у меня есть файл .rda, который содержит матрицу идентификаторов генов и подсчет для каждого идентификатора в 96 столбцах. Это выглядит так:

enter image description here

Я хочу получить отдельные подсчеты для количества ненулевых элементов в каждом столбце. Я пытаюсь использовать функцию sum() в цикле, но, возможно, я не понимаю синтаксис цикла в R. Любая помощь оценивается. Спасибо!

лес

4b9b3361

Ответ 1

Как насчет:

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" не был подходящим, чтобы показать, что мы суммируем количество ячеек, а не их содержимое)

Ответ 2

Другой метод с использованием plyr numcolwise:

library(plyr)

dat <- data.frame(a = sample(1:25, 25),
                  b = rep(0, 25),
                  c = sample(1:25, 25))
nonzero <- function(x) sum(x != 0)
numcolwise(nonzero)(dat)
   a b  c
1 25 0 25