r - 你可以在 R 中传递引用吗?

标签 r oop parameter-passing pass-by-reference

你能用“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/

相关文章:

r - 在 r data.table 中查找重复组

php - 如何只扩展一个父级?

c++ - 是否有像 Python 那样的 C++ 执行/数据模型?

c# - 通过 RedirectAction 传递 Model 为 null

r - 如何拟合Skellam回归?

r - 在 R 中绘制矩阵 "by parts"?

R:将过滤条件列表传递到数据框中

oop - Common Lisp 中类的 getter 和 setter

php - 构建 PHP 代码以链接对象创建和数据库写入?

c++ - 3 Function plus Main Function C 程序计算和显示阶乘