Как исправить: объект (список) нельзя заставить ввести «двойной»


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

Error: (list) object cannot be coerced to type 'double'

Эта ошибка возникает, когда вы пытаетесь преобразовать список из нескольких элементов в числовой без предварительного использования функции unlist() .

В этом руководстве представлены точные шаги, которые вы можете использовать для устранения этой ошибки.

Как воспроизвести ошибку

Следующий код пытается преобразовать список из нескольких элементов в числовой:

#create list
x <- list(1:5, 6:9, 7)

#display list
x

[[1]]
[1] 1 2 3 4 5

[[2]]
[1] 6 7 8 9

[[3]]
[1] 7

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

Error: (list) object cannot be coerced to type 'double'

Поскольку мы не использовали функцию unlist() , мы получили, что объект (список) не может быть принужден к вводу «двойного» сообщения об ошибке.

Как исправить ошибку

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

#create list
x <- list(1:5, 6:9, 7)

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

#display numeric values
x_num

[1] 1 2 3 4 5 6 7 8 9 7

Мы можем использовать функцию class() , чтобы убедиться, что x_num на самом деле является вектором числовых значений:

#verify that x_num is numeric
class(x_num)

[1] "numeric"

Мы также можем проверить, что исходный список и числовой список имеют одинаковое количество элементов:

#display total number of elements in original list
sum(lengths(x))

[1] 10

#display total number of elements in numeric list
length(x_num)

[1] 10

Мы видим, что две длины совпадают.

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

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

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

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