我正在尝试找到在R中创建链接列表的方法。
我发现tracemem()
返回对象的内存地址,所以有什么办法可以通过对象的内存地址找到对象?
最佳答案
那不是做到这一点的方法。如果要引用,请使用引用类或环境。像这样:
首先,我要在链接列表中放入三个对象:
> e1=new.env()
> e2=new.env()
> e3=new.env()
用数据项和指向列表中下一个的指针进行初始化
> with(e1,{data=99;nextElem=e2})
> with(e2,{data=100;nextElem=e3})
> with(e3,{data=1011;nextElem=NA})
现在,给定环境的函数将返回链表中的下一个:
> nextElem = function(e){with(e,nextElem)}
因此,让我们从某种环境
e
开始:> e=e1
> with(e,data)
[1] 99
要获取列表中下一项的值:
> with(nextElem(e),data)
[1] 100
并且为了证明事情是通过引用完成的,让我们更改e2:
> with(e2,{data=555})
并且
e
的下一项也已更改:> with(nextElem(e),data)
[1] 555
引用类应使其更简洁一些,但需要一些计划。
试图通过它们的内存位置获取R对象是行不通的。
关于r - 通过其内存地址获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965665/