ध्यान में रखते हुए एक सामान्य मैट्रिक्स nxn - उदाहरण के लिए:योग - आर
A <- matrix(1:16, nrow = 4, ncol = 4)
मैं कैसे "सही कम" त्रिकोण में पंक्तियों की योग की गणना और एक में जानकारी दे सकता है वेक्टर?
ध्यान में रखते हुए एक सामान्य मैट्रिक्स nxn - उदाहरण के लिए:योग - आर
A <- matrix(1:16, nrow = 4, ncol = 4)
मैं कैसे "सही कम" त्रिकोण में पंक्तियों की योग की गणना और एक में जानकारी दे सकता है वेक्टर?
यहाँ एक समाधान है। कुंजी lower.tri
या upper.tri
फ़ंक्शन का उपयोग करना है, और फिर प्रत्येक पंक्ति या कॉलम को क्रमबद्ध करने के लिए apply
का उपयोग करें। अंत में प्रत्येक पंक्ति के योग की गणना करें।
# Create example data frame
m <- matrix(1:16, 4)
m
# [,1] [,2] [,3] [,4]
# [1,] 1 5 9 13
# [2,] 2 6 10 14
# [3,] 3 7 11 15
# [4,] 4 8 12 16
# Calculate the sum
rowSums(m * apply(lower.tri(m), 1, sort))
# [1] 0 14 26 36
rowSums(m * apply(upper.tri(m), 2, sort))
# [1] 0 14 26 36
A = matrix(1:16, 4)
A
# [,1] [,2] [,3] [,4]
# [1,] 1 5 9 13
# [2,] 2 6 10 14
# [3,] 3 7 11 15
# [4,] 4 8 12 16
sapply(1:NROW(A), function(i) sum(tail(A[i,], i - 1)))
#[1] 0 14 26 36
एक मुखौटा समाहित है कि डेटा वांछित खोजें:
> mask <- apply(lower.tri(A, diag = FALSE), 1, rev)
> mask
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE TRUE
[3,] FALSE FALSE TRUE TRUE
[4,] FALSE TRUE TRUE TRUE
गुणा इस मुखौटा और गणना रकम:
> A * mask
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 14
[3,] 0 0 11 15
[4,] 0 8 12 16
> rowSums(A * mask)
[1] 0 14 26 36
कैसे सिर्फ 'rowSums के बारे में (ए * lower.tri (ए) [, ncol (ए): 1]) ' –