長度

2013-07-06 58 views
8

假設我有一個data.frame如下:長度

a b c 
1 5 NA 6 
2 NA NA 7 
3 6 5 8 

我想找到每個列的長度,不包括NA的。答案應該像

a b c 
2 1 3 

到目前爲止,我已經試過:

!is.na()     # Gives TRUE/FALSE 
length(!is.na())   # 9 -> Length of the whole matrix 
dim(!is.na())    # 3 x 3 -> dimension of a matrix 
na.omit()     # removes rows with any NA in it. 

請告訴我怎樣才能得到所需要的答案。

回答

10

或更快:

colSums(!is.na(dat)) 
a b c 
2 1 3 
2
> apply(dat, 2, function(x){sum(!is.na(x))}) 
a b c 
2 1 3 
0

雖然總和可能是一個更快的解決方案,我認爲這是length(x[!is.na(x)])更具可讀性。