आर

2011-09-06 14 views
35

में मैट्रिस को जोड़ना मैं समान कॉलम के मैट्रिस को कैसे जोड़ सकता हूं लेकिन पंक्तियों की अलग-अलग संख्या कैसे कर सकता हूं? उदाहरण के लिए, मैं (dim(a) = 15 7000) और बी (dim(b) = 16 7000) को जोड़ना चाहता हूं और मैं परिणाम पंक्तियों के 7000 कॉलम के मैट्रिक्स बनना चाहता हूं। क्या मैं इसे विभिन्न पंक्तियों और स्तंभों के मैट्रिस के लिए कर सकता हूं। मान लें कि मैं 15 पंक्तियों और 7500 स्तंभों में से एक के साथ 15 पंक्तियों और 7000 कॉलम के मैट्रिक्स को जोड़ना चाहता हूं। क्या मैं इसके साथ एक डेटासेट बना सकता हूं?आर

उत्तर

44

ध्वनि आप rbind लिए देख रहे हैं की तरह:

> a<-matrix(nrow=10,ncol=5) 
> b<-matrix(nrow=20,ncol=5) 
> dim(rbind(a,b)) 
[1] 30 5 

इसी तरह, cbind मैट्रिक्स क्षैतिज स्टैक।

मैं पूरी तरह सुनिश्चित करें कि आप आखिरी सवाल से क्या मतलब है नहीं कर रहा हूँ ("मैं अलग पंक्तियों और स्तंभों की मैट्रिक्स के लिए ऐसा कर सकते हैं।?")

+0

करने की जरूरत है मान लें कि मैं 15 पंक्तियों और 7000 कॉलम के मैट्रिक्स और 16 आरडब्ल्यू और 7500 कॉलम में से एक को जोड़ना चाहता हूं। लक्ष्य प्रत्येक पंक्ति के माध्यम से लूप करना और अधिकतम मान ढूंढना है। – Dombey

+3

@GTyler 15x7000 और 16x7500 के संयोजन के लिए आपका प्रश्न अच्छी तरह परिभाषित नहीं है। चीजों को निर्दिष्ट करने के लिए आपको अपना प्रश्न संपादित करना होगा (टिप्पणी छोड़ना नहीं): परिणाम क्या आयाम है? सभी अतिरिक्त पंक्तियों/कॉलम के साथ क्या होता है? परिणामस्वरूप मैट्रिक्स के प्रत्येक तत्व को विशिष्ट रूप से कैसे निर्धारित किया जाता है? – joran

+0

@ जोरन मैं असहमत हूं और मुझे यह भी लगता है कि इस समस्या के लिए rbind या cbind गलत कार्य हैं! अलग-अलग पंक्ति और/या स्तंभ संख्याओं के डेटा फ्रेम या मैट्रिस को गठबंधन करने में सक्षम होने के नाते, जैसा कि मैंने नीचे उल्लेख किया है, cbindX के लिए अधिक उपयुक्त है! – gawbul

6

cbindX पैकेज से GData की एकाधिक स्तंभों को जोड़ती है अलग कॉलम और पंक्ति लंबाई। यहाँ पेज की जाँच करें:

http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/gdata/html/cbindX.html

यह इनपुट :) के रूप में कई अल्पविराम से अलग मैट्रिक्स और data.frames लेता है तुम बस

install.packages("gdata", dependencies=TRUE)

और फिर

library(gdata) 
concat_data <- cbindX(df1, df2, df3) # or cbindX(matrix1, matrix2, matrix3, matrix4) 
+2

यह अब तक का सबसे तेज़ समाधान है जिसकी मैंने कोशिश की है। – Datageek

+0

'cbindX' एक महान कार्य है, लेकिन ओपी स्पष्ट रूप से पंक्ति से बाध्यकारी मैट्रिस के बारे में पूछ रहा है (कॉलम द्वारा नहीं, उनके परिणाम के आयामों को नोट करें), और ** gdata ** में एक समान rbind फ़ंक्शन नहीं है। हालांकि ** plyr ** में 'rbind.fill' फ़ंक्शन है। – joran

+0

इसके अतिरिक्त, मेरी टिप्पणी है कि उनके प्रश्न को अच्छी तरह से परिभाषित नहीं किया गया था सही था। आप इस भाग को अनदेखा कर रहे हैं: "लक्ष्य प्रत्येक पंक्ति के माध्यम से लूप करना और अधिकतम मान ढूंढना है।" यह पूरी तरह अस्पष्ट है कि ओपी का मतलब क्या था। अगर वे केवल एनए के साथ लापता कोशिकाओं को भरने जा रहे थे, तो मैं बस rbind.fill की सिफारिश की होगी। – joran