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