Как исправить в R: NA, представленные Coercion


Одно распространенное предупреждающее сообщение, с которым вы можете столкнуться в R:

Warning message:
NAs introduced by coercion

Это предупреждающее сообщение появляется, когда вы используете as.numeric() для преобразования вектора в R в числовой вектор, а в исходном векторе есть нечисловые значения.

Чтобы было ясно, вам не нужно ничего делать, чтобы «исправить» это предупреждающее сообщение. R просто предупреждает вас о том, что некоторые значения в исходном векторе были преобразованы в NA, потому что их нельзя преобразовать в числовые значения.

Однако в этом руководстве описаны точные шаги, которые вы можете использовать, если вы вообще не хотите, чтобы это предупреждающее сообщение отображалось.

Как воспроизвести предупреждающее сообщение

Следующий код преобразует вектор символов в числовой вектор:

#define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector
x_num <- as. numeric (x)

#display numeric vector
x_num

Warning message:
NAs introduced by coercion 
[1] 1 2 3 NA 4 NA

R преобразует вектор символов в числовой вектор, но отображает предупреждающее сообщение NAs, введенное принуждением, поскольку два значения в исходном векторе не могут быть преобразованы в числовые значения.

Метод № 1: подавить предупреждения

Один из способов справиться с этим предупреждающим сообщением состоит в том, чтобы просто подавить его с помощью функции submitWarnings() при преобразовании вектора символов в числовой вектор:

#define character vector
x <- c('1', '2', '3', NA, '4', 'Hey')

#convert to numeric vector, suppressing warnings
suppressWarnings(x_num <- as. numeric (x))

#display numeric vector
x_num

[1] 1 2 3 NA 4 NA

R успешно преобразует вектор символов в числовой вектор без отображения каких-либо предупреждающих сообщений.

Способ № 2: заменить нечисловые значения

Один из способов избежать предупреждающего сообщения — заменить нечисловые значения в исходном векторе пробелами с помощью функции gsub() :

#define character vector
x <- c('1', '2', '3', '4', 'Hey')

#replace non-numeric values with 0
x <- gsub(" Hey", " 0", x)

#convert to numeric vector
x_num <- as. numeric (x)

#display numeric vector
x_num

[1] 1 2 3 4 0

R успешно преобразует вектор символов в числовой вектор без отображения каких-либо предупреждающих сообщений.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:

Как исправить в R: имена не совпадают с предыдущими именами
Как исправить в R: более длинная длина объекта не кратна более короткой длине объекта
Как исправить в R: контрасты могут применяться только к факторам с 2 или более уровнями

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.