R: сообщение об ошибке приведения «нереализованный тип ‘list’ в ‘listgreater»

#r #casting

#r #Кастинг

Вопрос:

С помощью следующих команд (x — таблица с 3 столбцами A, B и C)

 library(reshape)
cast(x, A~B)
  

Появляется следующая ошибка:

 Using C as value column.  Use the value argument to cast to override this choice
Error in order(A = list("xxx",  : 
  unimplemented type 'list' in 'listgreater'
  

Что это значит и как это решить?


Я предполагаю, что это может быть связано с форматом данных dataframe (поправьте меня, если я ошибаюсь). Поскольку я выполнил проверку формата таблиц x и y с помощью команды str.

 str(x) returns
$ A: List of 6
..$ : chr "xxx"
....
$ B:chr "yyy" "yy2" ....
...
$ C: List of 6
..$ : num 22.....
...
  

Для другой таблицы y со столбцами D E и F при запуске команды приведения сообщение об ошибке не появляется.

 str(y) shows that all D E F columns are Factor w/ 6 levels....
  

Как я могу заставить приведение работать для списка и num, содержащих фрейм данных x?

Комментарии:

1. Спасибо HTH, я попробовал один, но результат str (x) тот же после выполнения «x <- as.data.frame(x)». Также появляется то же сообщение об ошибке. возможно, я еще не правильно определил проблему с фреймом данных? Приведение может использоваться только для фактора, а не для числа или chr?

2. lol, HTH означает надежду, что это поможет. Прокомментируйте мой ответ в следующий раз;-) , так что я знаю, что кто-то прокомментировал это. Не могли бы вы опубликовать дополнительную информацию о x? Воспроизводимый пример был бы отличным. Попробуйте использовать dput(x).

Ответ №1:

использование

 df <- as.data.frame(lapply(df, unlist))
  

Ответ №2:

Я думаю, что первый data.frame — это не data.frame, а список. Преобразование в data.frame решит проблему. Использование:

 x <- as.data.frame(x)
library(reshape)
cast(x, A~B)
  

HTH