问题R 是否包含对对象的引用的概念。
在 python 中,相等运算符实际上是引用复制。例如:
>> a = [1,2,3]
>> b = a
>> b[1] = 10
>> a
[1, 10, 3]
或在 C++ 中
vector a(3);
a[1] = 1;
vector& b = a;
b[1] = 10;
// now a[1] = 10
问题R 是否包含对对象的引用的概念。
在 python 中,相等运算符实际上是引用复制。例如:
>> a = [1,2,3]
>> b = a
>> b[1] = 10
>> a
[1, 10, 3]
或在 C++ 中
vector a(3);
a[1] = 1;
vector& b = a;
b[1] = 10;
// now a[1] = 10
您可能应该查看参考类,但您也可以只使用普通的旧环境:
> a=new.env()
> a$data=c(1,2,3)
> b=a
> b$data
[1] 1 2 3
> a$data[1]=99
> b$data
[1] 99 2 3
a
并且b
是相同的环境:
> a
<environment: 0xa1799fc>
> b
<environment: 0xa1799fc>
所以它们的内容是相同的对象。
我认为其他一些 R OO 系统(R.oo,proto?)使用这样的环境来实现 OO 对象和方法。
因此,尽管您可以这样做,但像这样的远距离动作效果可能会导致很难找到错误,而您可能不应该这样做。
是的,这个特性存在于 R 中,虽然我自己从未使用过它。参考类(或有时被称为 R5 类)具有这种行为。相当详细的文档在下面的链接中,以及一个示例
http://www.inside-r.org/r-doc/methods/ReferenceClasses
SE 上还有其他问题,这些问题链接到可能包含更多示例的各种演示文稿