我有一个R数据帧,有11M行和46列。一些字段包含空字符串(“”)。我需要用NAs替换那些空字符串,因为write.dta
(在foreign
包中)无法处理空字符串。替换数据帧中的空串需要很长的时间
但是,我的for循环需要很长时间(每列大约15分钟;有时R /整个系统崩溃)。我在8GB RAM Mac上运行RStudio(R 3.0.2)。有谁知道更快的方法?
for (i in 1:46){
if (length(which(myDF[,i]==""))!=0) {
myDF[,i][which(myDF[,i]=="")]<-NA
}
}
'for'-循环是臭名昭著的缓慢。尽可能避免。你可以看看'apply','sapply','lapply'。或者查看@Zbynek的解决方案。 – MrGumble
@MrGumble不正确。根本不是真的。 –