2013-02-10 85 views
2

问题 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 

回答

1

是,该功能存在于R,虽然我从来没有用它自己。参考类(或者有时称为R5类)具有这种行为。相当详细的文档在下面的链接,以及示例一起

http://www.inside-r.org/r-doc/methods/ReferenceClasses

上有SE它链接到这可能包含更多的例子

What is the significance of the new Reference Classes?

+0

请停止给他们打电话R5。 R核心,编写S3,S4或参考类的人,不会使用已经在R内部部署的另一个项目的术语。这是我们拉开的我们的笑话;不幸的是,哈德利将其延续下来。让我们停止这个。 – 2013-02-10 15:54:59

4

你应该各种演示等问题看参考课程,但你也可以使用简单的旧环境:

> 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 

ab都是一样的环境:

> a 
<environment: 0xa1799fc> 
> b 
<environment: 0xa1799fc> 

所以他们的内容是相同的对象。

我认为其他一些R OO系统(R.oo,proto?)使用这样的环境来实现OO对象和方法。

所以,虽然你可以只是做到这一点,像这样的距离效果可能会导致很难找到错误,而你可能不应该这样做。