У меня есть dataframe "d1" из большой таблицы MySQL. Мне нужно найти неиспользуемые столбцы (которые содержат только NA или пустые строки). (см. вопрос " Найти столбцы со всеми отсутствующими значениями").
Кажется, это работает нормально:
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) == ""))))
Поэтому мои вопросы:
Попробуй это:
allmisscols <- sapply(dt, function(x) all(is.na(x) | x == '' ))
Примечание. Вы использовали OR как double '||' пытаясь сделать его одним. Прочитайте это сообщение SO: булевы операторы && и ||