假设有以下数据表:
DT <- data.table(a=c(1,2,3,4,5,6),b=c(NaN,NaN,NaN,4,5,6),c=c(NaN,3,3,3,NaN,NaN))
我该如何将每列中的所有NaN
值替换为NA
?寻求一种简洁的方法来实现这一点,但我也想知道是否可以使用lapply
来实现,就像我下面尝试的那样。
迄今为止,我的方法如下:
DT[,lapply(SD,function(x){x[is.nan(x)] := NA}),.SDcols=c("a","b","c")]
我的代码的实际结果是:
Error in
:=
(x [is.nan(x)],NA): 检查 is.data.table(DT)== TRUE。否则,:= 和:=
(...)仅在特定方式下用于 j 中一次。请参阅帮助文件“:=”。
for(j in names(DT)) { set(DT, which(is.nan(DT[[j]])), j, NA) }
。 - markusset
:) - User878239set
实际上非常快,所以不要被循环“蒙蔽”。 - markus