tcrossprod का एक संस्करण हो सकता है जो इसे प्राप्त करता है लेकिन मैं इसे खोजने में सक्षम नहीं था। नीचे दिए गए उदाहरण से, अगर संयोजन की कोई फर्क नहीं पड़ता, तो संयोजन की पहली घटना के साथ केवल पंक्तियां कैसे प्राप्त करें? अर्थात। (1,2) मेरे लिए समान है (2,1)।अद्वितीय संयोजनों के साथ आर tcrossprod
a <- c(1,2,3,4)
b <- c(10,5,4,10)
df<- data.frame(a,b)
melt(tcrossprod(df$b,1/df$b))
> melt(tcrossprod(df$b,1/df$b))
Var1 Var2 value
1 1 1 1.00
2 2 1 0.50
3 3 1 0.40
4 4 1 1.00
5 1 2 2.00
6 2 2 1.00
7 3 2 0.80
8 4 2 2.00
9 1 3 2.50
10 2 3 1.25
11 3 3 1.00
12 4 3 2.50
13 1 4 1.00
14 2 4 0.50
15 3 4 0.40
16 4 4 1.00
एक हैक के बिट लेकिन काम करता है: 'टीटी <- tcrossprod (df $ ख, 1/df $ ख); tt [upper.tri (tt)] <- NA; reshape2 :: पिघला हुआ (tt, na.rm = T); ' – user20650
@ user20650 मुझे लगता है कि तालिका में पहली घटनाएं निम्न त्रिकोणीय हिस्से से मेल खाती हैं, 'upper.tri' की बजाय' lower.tri' का उपयोग करना चाहिए, और अतिरिक्त रूप से तर्क 'diag = TRUE' का उपयोग करना चाहिए क्योंकि हम उन विकर्ण तत्वों को भी चाहते हैं। – tkmckenzie
हाय @tkmckenzie; कोड आज़माएं - मुझे लगता है कि यह सही ऑर्डर उत्पन्न करता है और हम 'diag = TRUE' नहीं चाहते हैं क्योंकि यह' NA' – user20650