如何替换ffdf列中的所有NA?
问题描述:
我有一个200K行和12K列的ffdf对象。如何替换ffdf列中的所有NA?
这是来自与另一个ffdf对象的左连接,所以在不同列上有很多NA。
如何用特定值替换所有的NA(比如FALSE,因为来自LEFT JOIN的附加列都是LOGICAL)?
我可以成功地使用下面的语法在一列,以取代所有NA在列( “COLTEST”):
ffdfOut$coltest <- with(ffdfOut, ifelse(is.na(coltest), FALSE, coltest))
,但下面的循环:
cnamesLogical) <- colnames(ffdfOut)[12:12000]
for(colname in cnamesLogical)
{
ffdfOut[, colname] <- with(ffdfOut, ifelse(is.na(colname), FALSE, colname))
}
给我的错误: (ffdfOut,ifelse(is.na(colname),FALSE,colname)):'with.ffdf'只返回等于nrow(数据)长度相等的对象
感谢您的帮助!
答
你可以使用lapply()
它遍历一个数据集的每一列
lapply(ffdfOut[,12:12000], FUN=function(coltest) ifelse(is.na(coltest), FALSE, coltest))