Как исправить в r: na, введенные по принуждению


Обычное предупреждающее сообщение, с которым вы можете столкнуться в 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 digital vector
x_num

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

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

Способ №1: удалить предупреждения

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

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

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

#display digital 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 digital vector
x_num

[1] 1 2 3 4 0

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

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

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

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

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

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