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