Як виправити: об’єкт (список) не можна примусово вводити "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: довжина довшого об’єкта не є кратною довжині коротшого об’єкта