मैंने मैट्रिक्स उत्पन्न करने के लिए नीचे दिया गया कोड लिखा है, जो मेरे लिए है, एक जटिल जटिल पैटर्न है। इस मामले में मैंने निर्धारित किया कि परीक्षण और त्रुटि से समाप्त मैट्रिक्स में 136 पंक्तियां हैं।आर: पंक्तियों की अज्ञात संख्या के साथ एक मैट्रिक्स बनाना
मैं पहले से मैट्रिक्स पंक्तियों की संख्या की गणना करने के लिए एक फ़ंक्शन लिख सकता हूं, लेकिन फ़ंक्शन थोड़ा जटिल होगा। इस उदाहरण में मैट्रिक्स में पंक्तियों की संख्या = ((4 * 3 + 1) + (3 * 3 + 1) + (2 * 3 + 1) + (1 * 3 + 1)) * 4.
क्या मैट्रिक्स कथन में पंक्तियों की संख्या को हार्ड-वायरिंग के बिना आर में मैट्रिस बनाने का कोई आसान और कारगर तरीका है? दूसरे शब्दों में, क्या आर-लूप का उपयोग करते समय आर को बस एक मैट्रिक्स में पंक्ति जोड़ने की एक आसान तरीका है?
मैंने एक समाधान प्रस्तुत किया है जो प्रत्येक पास लूप के माध्यम से रिबाइंड को नियोजित करता है, लेकिन ऐसा लगता है कि यह थोड़ा आसान है और मैं सोच रहा था कि क्या कोई आसान समाधान हो सकता है।
क्षमा करें यदि यह प्रश्न पहले के प्रश्न के साथ अनावश्यक है। मैं इस साइट पर खोज सुविधा का उपयोग करके या इंटरनेट सर्च इंजन का उपयोग कर एक समान प्रश्न का पता नहीं लगा सका, हालांकि मुझे लगता है कि मुझे अतीत में एक समान प्रश्न मिला है।
नीचे उदाहरण कोड के 2 सेट हैं, एक rbind का उपयोग कर रहा है और दूसरा जहां मैंने पहले से ही nrow = 136 सेट करने के लिए परीक्षण और त्रुटि का उपयोग किया था।
किसी भी सुझाव के लिए धन्यवाद।
v1 <- 5
v2 <- 2
v3 <- 2
v4 <- (v1-1)
my.matrix <- matrix(0, nrow=136, ncol=(v1+4))
i = 1
for(a in 1:v2) {
for(b in 1:v3) {
for(c in 1:v4) {
for(d in (c+1):v1) {
if(d == (c+1)) l.s = 4
else l.s = 3
for(e in 1:l.s) {
my.matrix[i,c] = 1
if(d == (c+1)) my.matrix[i,d] = (e-1)
else my.matrix[i,d] = e
my.matrix[i,(v1+1)] = a
my.matrix[i,(v1+2)] = b
my.matrix[i,(v1+3)] = c
my.matrix[i,(v1+4)] = d
i <- i + 1
}
}
}
}
}
my.matrix2 <- matrix(0, nrow=1, ncol=(v1+4))
my.matrix3 <- matrix(0, nrow=1, ncol=(v1+4))
i = 1
for(a in 1:v2) {
for(b in 1:v3) {
for(c in 1:v4) {
for(d in (c+1):v1) {
if(d == (c+1)) l.s = 4
else l.s = 3
for(e in 1:l.s) {
my.matrix2[1,c] = 1
if(d == (c+1)) my.matrix2[1,d] = (e-1)
else my.matrix2[1,d] = e
my.matrix2[1,(v1+1)] = a
my.matrix2[1,(v1+2)] = b
my.matrix2[1,(v1+3)] = c
my.matrix2[1,(v1+4)] = d
i <- i+1
if(i == 2) my.matrix3 <- my.matrix2
else my.matrix3 <- rbind(my.matrix3, my.matrix2)
my.matrix2 <- matrix(0, nrow=1, ncol=(v1+4))
}
}
}
}
}
all.equal(my.matrix, my.matrix3)
यह 'द आर इन्फर्नो' के मंडल 2 का विषय है http://www.burns-stat.com/pages/Tutor/R_inferno.pdf आप निरंतर rbinding या cbinding से बचने के लिए सही हैं। –