3 回答

TA貢獻1843條經驗 獲得超7個贊
沒有。
賦值語句中的對象是不可變的。R將復制對象,而不僅僅是引用。
> v = matrix(1:12, nrow=4)
> v
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> v1 = v
> v1[,1] # fetch the first column
[1] 1 2 3 4
(附帶條件:上面的陳述對R個原語,例如向量,矩陣)是正確的,對函數也是如此; 我不能肯定地說所有 R對象-包括大多數對象,以及大多數最常用的對象都適用。
如果您不喜歡這種行為,可以在R軟件包的幫助下選擇退出。例如,有一個名為R.oo的R包,它可以讓您模仿按引用傳遞行為。R.oo在CRAN上可用。

TA貢獻1828條經驗 獲得超3個贊
正如一些人之前指出的,這可以通過使用class對象來完成environment。存在使用environments 建立的正式方法。它稱為參考類,使您的工作變得非常簡單。檢查?setRefClass主條目幫助頁面。它還描述了如何在引用類中使用形式方法。
例
setRefClass("MyClass",
fields=list(
name="character"
)
)
instance1 <- new("MyClass",name="Hello1")
instance2 <- new("MyClass",name="Hello2")
array = c(instance1,instance2)
instance1$name <- "World!"
輸出量
> instance1
Reference class object of class "MyClass"
Field "name":
[1] "World!"
> array
[[1]]
Reference class object of class "MyClass"
Field "name":
[1] "World!"
[[2]]
Reference class object of class "MyClass"
Field "name":
[1] "Hello2"
- 3 回答
- 0 關注
- 635 瀏覽
添加回答
舉報