यह उचित उत्तर नहीं है, लेकिन यह चर्चा करने और आर के आंतरिक कार्यों को समझने के लिए एक अच्छी जगह हो सकती है। इस तरह की बग एक अन्य पैकेज में पहले से तैयार हो गई है जिसका उपयोग मैं कर रहा था।
सबसे पहले, ध्यान दें कि बस एक नया चर करने के लिए मैट्रिक्स बताए पहले मदद नहीं करता है:
> A <- B <-matrix(c(1,3,0,2,8,4,1,1,1),nrow=3)
> r1 <- A %^% 5
> A
[,1] [,2] [,3]
[1,] 691 1926 312
[2,] 2331 6502 1056
[3,] 1116 3108 505
> B
[,1] [,2] [,3]
[1,] 691 1926 312
[2,] 2331 6502 1056
[3,] 1116 3108 505
मेरा अनुमान है कि आर मूल्यों के बजाय संदर्भ द्वारा स्मार्ट गुजर बनने की कोशिश कर रहा है। वास्तव में इसे काम करने के लिए आपको बी से अलग करने के लिए कुछ करने की आवश्यकता है:
`%m%` <- function(x, k) {
tmp <- x*1
res <- tmp%^%k
res
}
> B <-matrix(c(1,3,0,2,8,4,1,1,1),nrow=3)
> r2 <- B %m% 5
> B
[,1] [,2] [,3]
[1,] 1 2 1
[2,] 3 8 1
[3,] 0 4 1
ऐसा करने का स्पष्ट तरीका क्या है?
अंत में, पैकेज के लिए सी कोड में, वहाँ इस टिप्पणी है:
- एनबी: एक्स बदल दिया जाएगा!यदि आवश्यक हो तो कॉलर को प्रतिलिपि बनाना चाहिए
लेकिन मुझे समझ में नहीं आ रहा है कि आर क्यों सी/फोरट्रान कोड वैश्विक वातावरण में साइड इफेक्ट्स देता है।
गिना जा रहा है एक% ^% 6 भी एक के रूप में (प्रारंभिक ए छोड़ देता है)% ^% 4। परिणाम को एक नए चर में असाइन करना, मेरे प्रारंभिक मैट्रिक्स को बदलने से नहीं रोकता है। –
आपके जैसा लगता है कि आपको मैट्रिक्स को पहले एक नए चर को असाइन करने का असामान्य चरण लेना होगा। – John