2013-02-10 81 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對象和方法。

所以,雖然你可以只是做到這一點,像這樣的距離效果可能會導致很難找到錯誤,而你可能不應該這樣做。