Как исправить в 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: количество заменяемых элементов не кратно длине замены

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *