R 从列表中删除空条目

R 从列表中删除空条目,r,R,如何识别和删除列表中的空条目,但这些条目不是NA或NULL。为什么我的列表在我尝试比较它的元素时似乎是一个因素 > s <- subset(world, (oil == "Yes") & !is.na(effectiveness) & !is.null(effectiveness), select = effectiveness) > s effectiveness 3 32.62411409517834 30 31.91489350429

如何识别和删除列表中的空条目,但这些条目不是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
>s
有效性
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
>类型
[1] “列表”
>总数
乐趣中的错误(X[[1L]],…):
仅在包含所有数值变量的数据框上定义
>s[s>0]
[1] 娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜
警告信息:
在Ops.factor(左、右)中:>对于factor没有意义

s
是一个数据帧
typeof
返回基础存储类型,而不是类。如果不知道如何创建
s
,很难知道为什么
s$有效性是一个因素

您可以通过:


s$effective看起来您可能有一个空格或一堆空格,因此您的列“effectivenes”是一种因素(当您加载它时)。尝试搜索并用“
s
是data.frame”替换空格
typeof
返回基础存储类型,而不是类。如果不知道如何创建
s
@JoshuaUlrich
world
是一个数据框架,就很难知道为什么
s$effectility
是一个因素。你可以在上面的第一行看到我是如何创建
s
的。做sapply(世界,类)看看类的有效性是什么。@infominer它说
有效性
是一个因素。我怎样才能把它打成“双倍”?谢谢!这似乎奏效了。为什么我不能取结果的平均值?我得到的结果类型是“double”,但是当我尝试应用
平均值时,我得到了NA.mean(n,NA.rm=T),因为as.numeric会在有空格的地方引入NA
s$effectiveness <- as.numeric(levels(s$effectiveness))[s$effectiveness]