我有一个来自大型MySQL表的数据帧“d1”。我需要找到一个未使用的列(只包含NA或空字符串)。 (见问题Find columns with all missing values)。
这似乎工作正常:
allmisscols <- apply(d1,2, function(x)all(is.na(x)));
colswithallmiss <-names(allmisscols[allmisscols>0]);
cat( colswithallmiss,sep="\n");
...
allmisscols <- apply(d1,2, function(x)all(x==''));
colswithallmiss <-names(allmisscols[allmisscols>0]);
cat( colswithallmiss,sep="\n");
...
虽然第二个在列名中也给出“NA”;我不明白为什么。
但是当我尝试将它们结合起来时:
allmisscols <- apply(d1,2, function(x)all(is.na(x)||x=='') );
colswithallmiss <-names(allmisscols[allmisscols>0]);
print("the columns with all values missing");
print(colswithallmiss);
我在结果中看到一个实际上在我的表中包含值的列!
同样如下:
库(stringr); sapply(d1,function(x)all(any(is.na(x)||(str_trim(x)==“”)))))
所以我的问题是:
答案 0 :(得分:1)
试试这个:
allmisscols <- sapply(dt, function(x) all(is.na(x) | x == '' ))
注意:您已将OR用作双重&#39; ||&#39;试图让它成为一个单一的。阅读此SO帖子:Boolean operators && and ||