Найти различные виды пропущенных значений с помощью одной команды - синтаксическая ошибка? - PullRequest
0 голосов
/ 21 октября 2019

Кажется, у меня есть синтаксическая ошибка, которую я не могу найти.

У меня есть столбец фрейма данных, разделенный в списке с именем column. Я хочу найти все пропущенные значения в этом столбце. Однако по какой-то причине я получаю весь список возвращенным.

Вот моя попытка

> length(column)
[1] 712789
> length(column[column == ""])
[1] 24181
> length(column[column == "0"])
[1] 24181
> length(column[is.na(column)])
[1] 24181
> length(column[column == "" || column == "0" || is.na(column)])
[1] 712789

Это странно. Я ожидаю, что последнее подмножество также будет 24181. Даже если все вышеперечисленные подмножества будут ссылаться на разные элементы, результат не должен превышать 24181 x 3 = 72549. Вместо этого весь список является частью подмножества.

Что я делаю не так?

[править]
Для смелости я попробовал любую комбинацию из двух (вместо трех) подмножеств:результат также был 712789 каждый раз.

1 Ответ

1 голос
/ 21 октября 2019

Последняя строка кода должна использовать | вместо ||.

Одиночная вертикальная черта работает с векторами, а двойная черта - только со скалярами.

Предположим, что ihзначение столбца "". Тогда i-е значение результата равно "" == "" | "" == "0" | is.na(""), что равно ИСТИНА |ЛОЖЬ |ЛОЖЬ, ИСТИНА.

Предположим, что i-е значение столбца равно "0". Тогда i-е значение результата равно "0" == "" | "0" == "0" | is.na("0"), что равно FALSE |ИСТИНА |FALSE - TRUE.

Предположим, что i-е значение столбца равно NA. Тогда i-е значение результата равно NA == "" | NA == "0" | is.na(NA), что равно NA |NA |ИСТИНА, которая ИСТИНА.

Таким образом, i-е значение результата ИСТИНА для любого из условий. В противном случае ЛОЖЬ.

Для получения дополнительной информации см .: Булевы операторы && и ||

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...