У меня есть вложенный именованный список, который выглядит следующим образом:Установить тип данных значений в функции расплава в г
> data <- list("1"=list(rating=-1,points=190,name="Fernando"),"2"=list(rating=3,points=532,name="Carlos"))
> data
$'1'
$'1'$rating
[1] -1
$'1'$points
[1] 190
$'1'$name
[1] "Fernando"
$'2'
$'2'$rating
[1] 3
$'2'$points
[1] 532
$'2'$name
[1] "Carlos"
Теперь, когда я использую расплав функции «данные», то он преобразует значение для имени вместо числового. И я могу понять, почему, поскольку тип данных для значения задан как числовой. Есть ли способ конвертировать тип данных для значения в общий характер.
Вот что я получаю, когда я использую функцию расплава:
> melt(data)
value L2 L1
1 -1 rating 1
2 190 points 1
3 1 name 1
4 3 rating 2
5 532 points 2
6 1 name 2
Но то, что я хочу, это следующее:
value L2 L1
1 -1 rating 1
2 190 points 1
3 Fernando name 1
4 3 rating 2
5 532 points 2
6 Carlos name 2
, где тип данных значений символов.
Кажется, что '' Fernando'' хранится как переменная 'factor'. В противном случае 'R' не может преобразовать его в число. – MichaelChirico
Если '' Fernando'' хранится как символ, я думаю, что 'melt' преобразует все в' character'. – MichaelChirico
Это страшные 'strAsAsFactors = TRUE'. «Некорректное» преобразование фактически происходит в 'rbind.fill', после того как каждый элемент списка одиночных элементов преобразуется в кадр данных в' melt.default', используя только обычный вызов 'data.frame()'. Если я запустил код с параметрами (stringsAsFactors = FALSE), вы получите то, что хотите. – joran