मेरे पास अलग-अलग आकार के दो डेटाफ्रेम हैं जिन्हें मैं एक .txt फ़ाइल में आउटपुट करना चाहता हूं। मैं write.table फ़ंक्शन का उपयोग कर रहा हूं लेकिन मैं केवल एक .txt फ़ाइल पर आउटपुट कर सकता हूं।

dataframe1=data.frame(x=c(1:10), y=c(1:10), z=c(1:10))
dataframe2=data.frame(a=c(1:5), b=c(1:5)) 
write.table( C(dataframe1,dataframe2),
             file = "dataframes.txt", 
             append = F,
             sep = ",",
             row.names = F,
             col.names = F,
             na="",
             quote = F)

मैं उन्हें एक दूसरे के ऊपर ढेर के रूप में दिखाने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है। कोई सुझाव?

0
Colin 15 नवम्बर 2017, 00:01

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपने कोड में कुछ समस्याएं हैं।

सबसे पहले, सी (डेटाफ्रेम 1, डेटाफ्रेम 2) एक त्रुटि बनाता है क्योंकि आपने पूंजी सी का उपयोग किया था।

दूसरा, c(dataframe1,dataframe2) 5 मदों के साथ एक सूची आउटपुट करता है। यह डेटाफ़्रेम या मैट्रिक्स नहीं है। जब आप सेव करेंगे तो यह एक मैट्रिक्स में ज़बरदस्ती हो जाएगा। अनुपलब्ध डेटा वाली कोई भी पंक्ति स्वचालित रूप से भर दी जाएगी जो आप नहीं चाहते हैं। इसके परिणामस्वरूप आपका कोड आउटपुट होगा:

1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,4,4,4,4
5,5,5,5,5
6,6,6,1,1
7,7,7,2,2
8,8,8,3,3
9,9,9,4,4
10,10,10,5,5

यहां समस्या यह है कि आप दो अलग-अलग डेटाफ़्रेम को संयोजित करने का प्रयास कर रहे हैं जिनमें अलग-अलग संख्या में कॉलम हैं। आप या तो उन्हें एक साथ एक बड़ी टेबल के रूप में बांध सकते हैं और इसे सहेज सकते हैं। लेकिन सावधान रहें कि कोई भी लापता पंक्ति डेटा स्वचालित रूप से भरा जा सकता है जिसमें आप नहीं चाहते हैं (ए और बी में xyz की तुलना में 10 पंक्तियों के साथ केवल 5 पंक्तियां हैं)।

write.table( cbind(dataframe1,dataframe2),
              file = "dataframes.txt", 
              append = F,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)

जो आउटपुट करेगा:

x,y,z,a,b
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
4,4,4,4,4
5,5,5,5,5
6,6,6,1,1
7,7,7,2,2
8,8,8,3,3
9,9,9,4,4
10,10,10,5,5

या यदि आप वास्तव में उन्हें एक दूसरे के ऊपर चाहते हैं तो आप अलग कॉल का उपयोग कर सकते हैं और परिशिष्ट चालू कर सकते हैं।

write.table( dataframe1,
              file = "dataframes.txt", 
              append = F,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)
write( "\n Next Dataframe \n", file = "dataframes.txt", append = T)
write.table( dataframe2,
              file = "dataframes.txt", 
              append = T,
              sep = ",",
              row.names = F,
              col.names = T,
              na="",
              quote = F)

Which will output: 
x,y,z
1,1,1
2,2,2
3,3,3
4,4,4
5,5,5
6,6,6
7,7,7
8,8,8
9,9,9
10,10,10

 Next Dataframe 

a,b
1,1
2,2
3,3
4,4
5,5
0
Adam Sampson 15 नवम्बर 2017, 00:25