मेरे पास एक जटिल सूची है जिसमें अन्य सूचियां और डेटा फ्रेम शामिल हैं। मुझे केवल इस सूची को डेटा फ्रेम से शामिल करने के लिए सरल बनाना होगा - इसलिए प्रत्येक दूसरी स्तर की सूची अलग-अलग प्रथम स्तर के डेटा फ्रेम में बनाई जानी चाहिए।डेटा फ्रेम की सूची में सूचियों की जटिल सूची को बदलें
dd<-data.frame(x=1:3,y=4:6)
l1<-list(dd,list(dd,dd))
#original list
l1
[[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]]
[[2]][[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]][[2]]
x y
1 1 4
2 2 5
3 3 6
परिणाम मैं
l2<-list(dd,dd,dd)
l2
[[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]]
x y
1 1 4
2 2 5
3 3 6
[[3]]
x y
1 1 4
2 2 5
3 3 6
पाने के लिए मैं समारोह unlist()
और तर्क recursive=FALSE
साथ लेकिन इस मामले प्रथम स्तर डेटा फ्रेम में करने की कोशिश की दो वैक्टर में बदल जाती है की जरूरत है:
यहाँ प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है ।
unlist(l1,recursive=FALSE)
$x
[1] 1 2 3
$y
[1] 4 5 6
[[3]]
x y
1 1 4
2 2 5
3 3 6
[[4]]
x y
1 1 4
2 2 5
3 3 6
धन्यवाद! मैं विपरीत दिशा में हर समय सोच रहा था - सूची की सूची कैसे विभाजित करें। डेटा फ्रेम को डेटा फ्रेम में बदलने के लिए आइडिया बहुत अच्छा है। –
मैं 'वर्ग (x) ==" data.frame "से बचने की कोशिश करता हूं और इसके बजाय' is.data.frame' का उपयोग करता हूं। – shadow
यह सुनिश्चित नहीं है कि इसका उपयोग करने से बचने के लिए यहां क्या समस्या है। क्या आप विस्तारित कर सकते हैं? 'is.data.frame' आंतरिक रूप से 'विरासत' का उपयोग करता है और यह' data.frame' से प्राप्त वस्तुओं के लिए सत्य प्रदान करेगा। उदाहरण के लिए 'data.table' पर भी। यदि यह वांछनीय है, तो हाँ, 'विरासत' का उपयोग करना बेहतर है। – Arun