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 关注
- 585 浏览
添加回答
举报