r - 通过其内存地址获取对象

标签 r memory

我正在尝试找到在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/

相关文章:

memory - 在erlang中分配的eheap

ios - dispatch_group 中的内存泄漏

windows - 如何在powershell中获取进程的内存(私有(private)工作集)?

r - 是否可以在 dplyr 中进行完全连接并保留连接中使用的所有列?

R Shiny : Use reactiveValues() with data. 表按引用分配

c++ - 避免内存泄漏

java - 如果声明但未初始化对象的变量是否会使用内存空间?

r - cbind 2个具有不同行数的数据帧

r - 以不同的用户身份启动 R

r - 如何在 R 中迭代地更改观测值?