दूसरे और तीसरे सरणी आयामों के विकर्ण को 0 पर सेट करें

मैं एक मैट्रिक्स में दूसरे और तीसरे आयाम के विकर्णों को शून्य पर सेट करने में सक्षम होना चाहता हूं, जैसा कि नीचे दिखाया गया है:

array<-array(1,dim=c(3,3,3))
array[,1,1]<-0
array[,2,2]<-0
array[,3,3]<-0

मैं हमेशा एक लूप का उपयोग कर सकता था, लेकिन मेरी स्क्रिप्ट का यह हिस्सा तेजी से होना चाहिए। क्या कोई ऐसा कार्य है जो यह सब एक बार में कर सकता है?

धन्यवाद, रयान

0

2 उत्तर

तकनीकी रूप से, यह एक लूप भी है:

sapply(1:3,function(i) a[,i,i] <<- 0)

लेकिन मुझे लगता है कि यह सभी व्यावहारिक उद्देश्यों के लिए पर्याप्त तेज़ होगा।

0
जोड़ा
क्यों डाउनवोट? ..
जोड़ा लेखक sds, स्रोत
शायद << - का उपयोग लेकिन जो कभी-कभी लोगों के साथ जानता है। +1
जोड़ा लेखक Thomas, स्रोत

एक वैकल्पिक समाधान (यदि आप i s से कम पंक्तियां हैं तो तेज़ हो सकते हैं):

apply(a, 1, function(x) diag(x) <- 0)
0
जोड़ा