2016-11-22 10 views
-1

У меня есть список такие как: (только с 158 подсписков)Создание фрейма данных из списка подсписков

> adjlist 
$innocent 
$innocent$competence 
[1] 4.1 

$innocent$desirable 
[1] 4.68 

$innocent$masculinity 
[1] 2.69 

$innocent$warmth 
[1] 5.26 


$enthusiastic 
$enthusiastic$competence 
[1] 5.21 

$enthusiastic$desirable 
[1] 5.81 

$enthusiastic$masculinity 
[1] 3.93 

$enthusiastic$warmth 
[1] 5.64 

И хочу, чтобы преобразовать его в кадр данных, такие как: (Я создал эту вручную)

   competence masculinity desirable warmth 
innocent   4.10  2.69  4.68 5.26 
enthusiastic  5.21  3.93  5.81 5.64 

Заранее благодарен!

+0

Просьба показать dput в примере – akrun

+0

Попробовать библиотеку (reshape2); acast (melt (adjlist), L1 ~ L2, value.var = "value") ' – akrun

+0

Большое вам спасибо! Я не понимаю «Пожалуйста, покажите, что такое пример», извините! Что ты имеешь в виду? –

ответ

4

Если я правильно понял, это должно делать то, что вы хотите, без каких-либо дополнительных библиотек.

res <- do.call(rbind, Map(data.frame, adjlist)) 
class(res)  # "data.frame" 
rownames(res) # "innocent", "enthusiastic" 
colnames(res) # "competence", "desirable", "masculinity", "warmth" 

Map(data.frame, adjlist) будет применяться data.frame к каждому элементу adjlist и возвращает список фреймов данных, каждый из которых имеет один ряд. do.call(rbind, ...) будет принимать этот результат и сводить его к одному кадру данных. По умолчанию имена должны быть сохранены.