r - समम - हर्मिटी आव्यूह



आर में मैट्रिक्स के स्थान संशोधन में (1)

मैं R में मैट्रिक्स के इन-प्लेस संशोधनों के लिए कॉपी-ऑन-संशोधित होने से बचने का कोई तरीका हूं?

मैं एक छोटे मैट्रिक्स को बड़े मैट्रिक्स के एक टुकड़े के रूप में प्रतिलिपि बनाने की कोशिश कर रहा हूं।

library(data.table)
y <- matrix(c(11,21,31,12,22,32),nrow=3,ncol=2)
address(y)
[1] "08429190"

y[2:3,] <- matrix(c(1,1,8,12),nrow=2)
address(y)
[1] "0E033D28"

मुझे विंडोज़ 8.1 पर RStudio 0.9 9.441 में चलने वाले आर 3.2.0 का इस्तेमाल करते हुए ओपी के रूप में एक ही व्यवहार मिलता है और pryr::address का उपयोग कर रहा है। मुद्दा यह है कि आरएसटीडियो में इसके पर्यावरण फलक के लिए वाई का एक संदर्भ है। जैसा कि अक्सर मामला है, हैडली विकम में इस के कुछ उत्कृष्ट दस्तावेज हैं।

मुझे नहीं लगता कि इसके चारों ओर किसी भी तरह से आरटीयूडीओ का इस्तेमाल न करने के अलावा वैश्विक वातावरण में मैट्रिक्स के लिए कोई रास्ता नहीं है मैंने कुछ अन्य चीजों की कोशिश की है फ़ंक्शन के भीतर मैट्रिक्स ठीक हैं:

library("pryr")
fn <- function() {
  y <- matrix(c(11,21,31,12,22,32),nrow=3,ncol=2)
  print(address(y))
  y[2:3,] <- matrix(c(1,1,8,12),nrow=2)
  print(address(y))
}

कॉलिंग fn() को दिखाना चाहिए कि पता अपरिवर्तित है

हालांकि, एक सूची या पर्यावरण जो कि वैश्विक वातावरण में हैं, के सदस्य के रूप में वाई बनाना, प्रतिलिपि को लिखने से नहीं रोकती (जैसे x <- new.env(); x$y <- matrix(...) )।

प्रति RStudio में पर्यावरण फलक अक्षम करने का कोई तरीका क्या है? पर्यावरण फलक को अक्षम करने का कोई तरीका नहीं है

data.table अभी भी data.table प्रतियों से बचने के लिए प्रबंधित करता है प्रयत्न:

library("data.table")
x <- as.data.table(matrix(c(11,21,31,12,22,32),nrow=3,ncol=2))
address(x)
x[2:3, `:=`(V1 = c(1, 1), V2 = c(8, 12))]
address(x)
x[, V3 := V1 + V2]
address(x)




copy-on-write