你能用“R”通过引用传递吗?
例如,在以下代码中:
setClass("MyClass",
representation(
name="character"
))
instance1 <-new("MyClass",name="Hello1")
instance2 <-new("MyClass",name="Hello2")
array = c(instance1,instance2)
instance1
array
instance1@name="World!"
instance1
array
输出是
> instance1
An object of class “MyClass”
Slot "name":
[1] "World!"
> array
[[1]]
An object of class “MyClass”
Slot "name":
[1] "Hello1"
[[2]]
An object of class “MyClass”
Slot "name":
[1] "Hello2"
但我希望它是
> instance1
An object of class “MyClass”
Slot "name":
[1] "World!"
> array
[[1]]
An object of class “MyClass”
Slot "name":
[1] "World!"
[[2]]
An object of class “MyClass”
Slot "name":
[1] "Hello2"
是否可以 ?
最佳答案
否 .
赋值语句中的对象是不可变的。 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 包R.oo 这允许您模仿传递引用行为; R.oo 可在 CRAN 上获得.
关于r - 你可以在 R 中传递引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603184/