2013-02-10 8 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 Core, люди, которые написали S3, S4 или Reference Classes, не используют этот термин, который уже был развернут для другого проекта внутри R. Это была наша шутка, которую мы вытащили; к сожалению, Хэдли увековечил его. Давайте остановим это. –

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 

a и b такие же среда:

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

поэтому их содержание являются одни и те же объекты.

Я думаю, что некоторые из других систем R OO (R.oo, proto?) Используют такие среды, чтобы реализовать объекты и методы OO.

Итак, хотя вы можете использовать , такие действия могут быть очень трудными для поиска ошибок, и вам, вероятно, не стоит этого делать.

Смежные вопросы