अक्सर मैं एक सूची को रूपांतरित करना चाहता हूं जिसमें प्रत्येक इंडेक्स में डेटा फ्रेम के समान तत्व प्रकार होते हैं। उदाहरण के लिए, मैं एक सूची है हो सकता है:डेटा फ्रेम के रूप में सूची डालने का सबसे प्रभावी तरीका क्या है?
> my.list
[[1]]
[[1]]$global_stdev_ppb
[1] 24267673
[[1]]$range
[1] 0.03114799
[[1]]$tok
[1] "hello"
[[1]]$global_freq_ppb
[1] 211592.6
[[2]]
[[2]]$global_stdev_ppb
[1] 11561448
[[2]]$range
[1] 0.08870838
[[2]]$tok
[1] "world"
[[2]]$global_freq_ppb
[1] 1002043
मैं एक डेटा फ्रेम जहां प्रत्येक सूचकांक तत्व एक स्तंभ है के लिए इस सूची में परिवर्तित करना चाहते। जाने के लिए प्राकृतिक (मेरे लिए) बात करने के लिए उपयोग है do.call
है: पर्याप्त
> my.matrix<-do.call("rbind", my.list)
> my.matrix
global_stdev_ppb range tok global_freq_ppb
[1,] 24267673 0.03114799 "hello" 211592.6
[2,] 11561448 0.08870838 "world" 1002043
सरल, लेकिन जब मैं एक डेटा फ्रेम के रूप में इस मैट्रिक्स कास्ट करने के लिए प्रयास करते हैं, कॉलम, सूची तत्व रहते हैं बल्कि वैक्टर से:
> my.df<-as.data.frame(my.matrix, stringsAsFactors=FALSE)
> my.df[,1]
[[1]]
[1] 24267673
[[2]]
[1] 11561448
वर्तमान में, डेटा फ्रेम डाली ठीक से प्राप्त करने के लिए मैं unlist
और as.vector
का उपयोग कर प्रत्येक स्तंभ पर पुनरावृत्ति कर रहा हूँ, तो इस तरह के रूप डेटा फ्रेम recasting:
new.list<-lapply(1:ncol(my.matrix), function(x) as.vector(unlist(my.matrix[,x])))
my.df<-as.data.frame(do.call(cbind, new.list), stringsAsFactors=FALSE)
हालांकि, यह बहुत अक्षम लगता है। क्या ऐसा करने का बेहतर तरीका है?
देखने '? Data.table :: rbindlist' – marbel
2017 के रूप में आप का उपयोग करना चाहिए' your_list%>% कम (bind_rows) '' purrr' – Zafar