我需要从data.table中删除列a
包含嵌套在向量中的任何NA
的任何行:
library(data.table)
a = list(as.numeric(c(NA,NA)), 2,as.numeric(c(3, NA)), c(4,5) )
b <- 11:14
dt <- data.table(a,b)
因此,应删除第1行和第3行。
我尝试了三种解决方案都没有成功:
dt1 <- dt[!is.na(a)]
dt2 <- dt[!is.na(unlist(a))]
dt3 <- dt[dt[,!Reduce(`&`, lapply(a, is.na))]]
有什么主意吗?谢谢。
2条答案
按热度按时间t2a7ltrp1#
您可以执行以下操作:
此替代方法也有效,但会收到警告
更好的方法(感谢R2evans,参见评论)
输出:
第三个选项,你可能会喜欢:您可以将该功能移到一个单独的helper函数中,该函数接收一个列表列表(
nl
),并返回一个长度等于length(nl)
的布尔向量,然后按如下所示应用该函数:在本例中,我显式地对lapply()
的结果调用unlist()
,而不是让sapply()
为我执行此操作,但我也可以使用sapply()
o7jaxewo2#