Как исправить в r: отсутствует аргумент «нет», без дефолта
Ошибка, с которой вы можете столкнуться в R:
Error in ifelse(df$team == "B", "Boston"): argument "no" is missing, with no default
Эта ошибка возникает, когда вы используете функцию ifelse() в R, но забываете включить третий аргумент, чтобы указать значение, которое должно быть возвращено, если логический тест возвращает ложь.
В этом руководстве объясняется, как именно исправить эту ошибку.
Как воспроизвести ошибку
Предположим, у нас есть следующий кадр данных в R:
#create data frame df <- data. frame (team=c('B', 'B', 'B', 'B', 'C', 'C', 'C', 'D'), points=c(12, 22, 35, 34, 20, 28, 30, 18), assists=c(4, 10, 11, 12, 12, 8, 6, 10)) #view data frame df team points assists 1 B 12 4 2 B 22 10 3 B 35 11 4 B 34 12 5 C 20 12 6 C 28 8 7 C 30 6 8 D 18 10
Теперь предположим, что мы пытаемся использовать функцию ifelse() для создания нового столбца с именем city , содержащего слово «Бостон», если значение в столбце команды равно «B»:
#attempt to create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ')
Error in ifelse(df$team == "B", "Boston"):
argument "no" is missing, with no default
Мы получаем сообщение об ошибке, поскольку нам не удалось предоставить третий аргумент функции ifelse() , который определяет значение, которое мы должны вернуть, если значение в столбце команды не равно «B».
Как исправить ошибку
Чтобы исправить эту ошибку, нужно просто предоставить третий аргумент функции ifelse() , который указывает значение, которое мы должны вернуть, если значение в столбце команды не равно «B».
Следующий синтаксис показывает, как это сделать:
#create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ', ' Other ')
#view updated data frame
df
team points assists city
1 B 12 4 Boston
2 B 22 10 Boston
3 B 35 11 Boston
4 B 34 12 Boston
5 C 20 12 Other
6 C 28 8 Other
7 C 30 6 Other
8 D 18 10 Other
Обратите внимание, что на этот раз мы не получаем никаких ошибок, поскольку мы предоставили третий аргумент функции ifelse() .
В этом примере функция ifelse() возвращает значение «Бостон», если значение в столбце «команда » равно «B», или значение «Другое», если значение в столбце « команда » другое.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:
Как исправить в R: NA, введенные принудительно
Как восстановить в R: индекс выходит за пределы
Как исправить в R: длина более длинного объекта не кратна длине более короткого объекта
Как отремонтировать в R: количество заменяемых элементов не кратно длине замены