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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *