चाहते "विकर्ण" तत्वों को शून्य पर सेट करना आपको पहले से ही एक उत्तर दिया गया है, लेकिन मुझे आश्चर्य है कि क्या आप कुछ और सामान्य की उम्मीद कर रहे थे। उस कोड के साथ सफलता की कमी के कारण दो गुना थे: आपके सूचकांक का निर्माण त्रुटिपूर्ण था और अनुक्रमण गलत था। यह सफल रहा होता है:
for(i in 1:(rowCount - 1)){ # need an expression that retruns a sequence
for (j in 1:rowCount) # ditto
if (i == j){
similMatrix[i,j] <- 0; # need to index the matrix with two element if using i,j
}
}
#----------
> show(similMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 NA NA NA NA NA NA NA NA
[2,] NA 0 NA NA NA NA NA NA NA
[3,] NA NA 0 NA NA NA NA NA NA
[4,] NA NA NA 0 NA NA NA NA NA
[5,] NA NA NA NA 0 NA NA NA NA
[6,] NA NA NA NA NA 0 NA NA NA
[7,] NA NA NA NA NA NA 0 NA NA
[8,] NA NA NA NA NA NA NA 0 NA
लेकिन आर में लूप का सहारा आम तौर पर एक अंतिम उपाय माना जाता है एक ही "लूप" आपरेशन करने का एक और अधिक कॉम्पैक्ट तरीका नहीं है और यह सामान्यीकरण करता है (कभी कभी गलत कारणों के लिए।) केवल विकर्ण सेट करने से अधिक व्यापक रूप से।
similMatrix[ row(similMatrix) == col(similMatrix) ] <- 0
> similMatrix
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 NA NA NA NA NA NA NA NA
[2,] NA 0 NA NA NA NA NA NA NA
[3,] NA NA 0 NA NA NA NA NA NA
[4,] NA NA NA 0 NA NA NA NA NA
[5,] NA NA NA NA 0 NA NA NA NA
[6,] NA NA NA NA NA 0 NA NA NA
[7,] NA NA NA NA NA NA 0 NA NA
[8,] NA NA NA NA NA NA NA 0 NA
आप subdiagonal शून्य पर सेट करना चाहता है तो आप सिर्फ इस्तेमाल कर सकते हैं:
similMatrix[ row(similMatrix)-1 == col(similMatrix) ] <- 0
आप अतिरिक्त पंक्ति पैदा करने से बच सकते हैं और col मैट्रिक्स का उपयोग करते हुए इस:
mind <- min(dim(similMatrix))
# avoid going outside dimensions if not symmetric
similMatrix[ cbind(seq(maxd),seq(maxd)) <- 0
आप नहीं कर रहे हैं वांछित आउटपुट प्राप्त करना? –