Как исправить в 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 или более уровнями