从列表中删除空条目

时间:2014-04-23 16:51:25

标签: r

如何识别和删除列表中空的但不是NA或NULL的条目。当我尝试比较其元素时,为什么我的列表似乎是一个因素?

> s <- subset(world, (oil == "Yes") & !is.na(effectiveness) & !is.null(effectiveness), select = effectiveness)
> s
        effectiveness
3   32.62411409517834
30  31.91489350429382
41                   
54   23.8770690651932
64  35.93380642839076
80   33.3333332769696
81   35.6973993299137
116   50.118203450602
131 20.09456253502668
181                  
194 19.62174974716583
> typeof(s)
[1] "list"
> sum(s)
Error in FUN(X[[1L]], ...) : 
  only defined on a data frame with all numeric variables
> s[s > 0]
 [1] NA NA NA NA NA NA NA NA NA NA NA
Warning message:
In Ops.factor(left, right) : > not meaningful for factors

1 个答案:

答案 0 :(得分:2)

s是一个data.frame。 typeof返回基础存储类型,而不是类。很难知道为什么s$effectiveness是一个不知道你如何创建s的因素。

您可以{/ 3}}通过:

s$effectiveness <- as.numeric(levels(s$effectiveness))[s$effectiveness]