【发布时间】:2020-03-30 13:34:08
【问题描述】:
所以我目前有一个 data.table 的案例,其中有一列类型为 list。
此列表可以包含不同的值,NULL 以及其他可能的值。
我尝试对 data.table 进行子集化,以仅保留该列的值为 NULL 的行。
看……我在下面的尝试(例如,我将列命名为“ColofTypeList”):
DT[is.null(ColofTypeList)]
它返回给我一个Empty data.table。
然后我尝试了:
DT[ColofTypeList == NULL]
它返回以下错误(我预计会出现错误):
Error in .prepareFastSubset(isub = isub, x = x, enclos = parent.frame(), :
RHS of == is length 0 which is not 1 or nrow (96). For robustness, no recycling is allowed (other than of length 1 RHS). Consider %in% instead.
(只是一个精度,我的原始 data.table 包含 96 行,这就是错误消息说这样的话的原因:
不是 1 或 nrow (96)。
行数不是重点)。
然后我尝试了这个:
DT[ColofTypeList == list(NULL)]
它返回以下错误:
Error: comparison of these types is not implemented
我还尝试提供与列长度相同长度的列表,并得到同样的最后一个错误。
所以我的问题很简单:什么是正确的 data.table 方法来子集此“ColofTypeList”的元素为NULL 的行?
编辑:这是一个可重现的例子
DT<-data.table(Random_stuff=c(1:9),ColofTypeList=rep(list(NULL,"hello",NULL),3))
玩得开心!
【问题讨论】:
-
请展示一个可重现的小例子
标签: r list data.table subset