Как исправить: объекту (списку) невозможно принудительно ввести «double»;
Распространенная ошибка, с которой вы можете столкнуться в 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() , мы получили сообщение об ошибке (список нельзя принудительно ввести «double») .
Как исправить ошибку
Чтобы преобразовать список в числовой, нам нужно убедиться, что мы используем функцию 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] "digital"
Мы также можем проверить, что исходный список и числовой список имеют одинаковое количество элементов:
#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: длина более длинного объекта не кратна длине более короткого объекта