2017-02-03 12 views
7

पर उलटा विकर्ण तो मेरे पास 2 dataframes है। उन्हें इतनी तरह चित्र:मैट्रिक्स

combined.data 
> 1.2 1.12 1.80 
    1.4 1.10 0.7 
    1.3 0.4 0.4 

ऊपरी बाएँ मैट्रिक्स data1 है, नीचे-दाएं data2 है:

data1 <- data.frame(c(1.2, 1.4, 1.3), 
        c(1.12,1.1, 1.9), 
        c(1.8, 1.1, 1.32)) 

data2 <- data.frame(c(0.4, 0.2, 0.3), 
        c(0.1, 0.1, 0.4), 
        c(0.5, 0.7, 0.4)) 

मैं एक संयुक्त मैट्रिक्स कि इस तरह दिखेगा कैसे बना सकते हैं। मैं

अब तक कर रहा हूँ, मेरे कोड इस है और मैं मैं क्या चाहते लेकिन ऊपर से नीचे की ओर:

new <- -data1 
#new <- new[, rev(colnames(data1))] 
# diag(new) <- NA 
corel <- data2 
#corel <- corel[, rev(colnames(data2))] 


new[upper.tri(new)] <- corel[upper.tri(corel)] 

और मैं पंक्तियों और स्तंभ क्रम की जरूरत बरकरार होने के लिए

किसी भी विचार ?

Haboryme के उपयोग के बाद, मुझे किसी भी तरह के परिणाम मिल गए। और मैंने इसे दिखाने के लिए एक हीटमैप उत्पन्न किया है। समस्या यह है कि कुछ रिक्त स्थानों में, डेटा 2 matrices ओवरलैप कर रहे हैं।

यहाँ हीटमैप enter image description here

विकर्ण यह पूरी तरह से लाल होने की जरूरत है ऊपर है, और विकर्ण नीचे, नीले।

मैंने Haboryme द्वारा जवाब स्वीकार कर लिया है। और समस्या यह थी कि मेरा डेटा 32 * 31 था। यदि आपका मैट्रिक्स वर्ग नहीं है तो यह एक गड़बड़ होगी! मैंने अभी अपने डेटासेट में 1 डमी कॉलम जोड़ा और यह एक आकर्षण की तरह काम किया!

+3

आपका लाइनों चेतावनी देने के लिए और क्या वे उत्पादन बहुत क्या आपने सोचा था होने की संभावना नहीं है। कृपया, यह सुनिश्चित करने के लिए कुछ समय बिताएं कि हमारे पास पुनरुत्पादित उदाहरण है। – nicola

+0

मैं 100% निश्चित नहीं हूं कि आप क्या करने का प्रयास कर रहे हैं लेकिन सबसे पहले 'as.data.frame' को' data.frame' में बदलें। मुझे लगता है कि समस्या यह हो सकती है कि आप सोचते हैं कि डेटा फ्रेम में जो संख्याओं को आप पढ़ रहे हैं, वे एक पंक्ति है जबकि यह वास्तव में एक कॉलम अर्थात 'सी (1.2, 1.4, 1.3)' का पहला स्तंभ ' data1'। –

+0

शायद वे 'as.data.frame' के बजाय 'rbind' चाहते हैं ... – nicola

उत्तर

0

आप कर सकता है:

data1 <- data.frame(c(1.2, 1.4, 1.3), 
        c(1.12,1.1, 1.9), 
        c(1.8, 1.1, 1.32)) 

data2 <- data.frame(c(0.4, 0.2, 0.3), 
        c(0.1, 0.1, 0.4), 
        c(0.5, 0.7, 0.4)) 

combined=as.matrix(data1) 
combined[apply(lower.tri(as.matrix(data2)), 1, rev)] <-as.matrix(data2)[apply(lower.tri(as.matrix(data2)), 1, rev)] 

> combined 
    c.1.2..1.4..1.3. c.1.12..1.1..1.9. c.1.8..1.1..1.32. 
[1,]    1.2    1.12    1.8 
[2,]    1.4    1.10    0.7 
[3,]    1.3    0.40    0.4 
+0

के साथ सबसेटिंग और असाइन करने का प्रयास कर सकते हैं मैंने अभी आपके दृष्टिकोण में जाने दिया है। यह kinda काम करता है ... समस्या यह है कि कुछ बिंदुओं पर एक मैट्रिक्स दूसरे के साथ ओवरलैपिंग है। यह दिखाने के लिए कि यह कैसा व्यवहार करता है, मैं एक हीटमैप की एक तस्वीर कैसे जोड़ सकता हूं? – Mixalis

+0

@Mixalis आप अपनी पोस्ट संपादित कर सकते हैं। – Haboryme

+0

कृपया अभी जांचें। – Mixalis