当列为""时,如何从R中列表中的列表中删除空列?还是NA?
示例数据:
x <- list( a = cars , b = ability.cov , d = mtcars )
x[[3]][2]<-""
所以第三个列表中的第二列现在全部是&#34;&#34;,我希望将其从x中删除
编辑:问题是我不知道哪个列在列表中(列表内)是空的。我需要一些算法
我已尝试过以下哪项对我不起作用:
x<-x[,colSums(x!= "") != 0 ]
答案 0 :(得分:2)
删除所有仅包含值&#34的列;&#34;从列表中的数据框中可以做到:
xii
解释:
xii
,则可以针对&#34;&#34;进行测试,这会给出一个逻辑向量,其长度与all(...)
相同。 sapply(xi, ...)
很明确:如果所有元素都为TRUE,则结果为TRUE xi
正在为xi
的每列计算此值。它
对xi[!sapply()]
sapply()
将xi
中的逻辑向量反转并使用
它作为lapply(x, ...)
的索引。如果索引的一个元素为FALSE,则
结果中忽略了列。xnew <- lapply(...)
正在原始列表中运行 不要忘记将结果存储在对象中! lapply(x, function(xi) xi[!sapply(xi, function(xii) all(xii=="" | is.na(xii)))])
如果您想删除仅包含NA和&#34;&#34;的列作为价值观:
{{1}}