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


Одна распространенная ошибка, с которой вы можете столкнуться в 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: более длинная длина объекта не кратна более короткой длине объекта