#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