apply
返回一个包含许多NULL
条目的列表。我使用的代码很长,所以我用一个简单的例子来重现这个问题。
# Generate data.
df <- data.frame(a= c(1,2, NA, 6),
b= c(1, 7, 3, 7))
# Return only columns that have NAs.
my_list <- apply(df, 2, function(col_i){
if(any(is.na(col_i))){
return(col_i)
}})
运行此程序可为我们提供
my_list
$a
[1] 1 2 NA 6
$b
NULL
我的问题是,我得到了很多Null
条目,所以我无法处理结果。我如何(a(避免申请返回NULL
条目或(b(丢弃my_list
中的所有NULL
条目?
所以预期的输出是
my_list
$a
[1] 1 2 NA 6
同样,我使用的实际代码比这更复杂。因此,请不要建议使用类似df[ , !complete.cases(t(df)), drop= FALSE]
的东西,它也会返回包含任何缺失的列。我的问题不是关于如何获得有任何遗漏的列,而是关于如何处理apply
中的NULL
条目。我想把if
的部分放在apply
里面。
每个函数都必须返回一些东西,所以你不能真正避免返回一些东西但你可以删除它们:
Filter(length, apply(df, 2, function(col_i) if(any(is.na(col_i))) return(col_i)))
#$a
#[1] 1 2 NA 6