data.tables是否在ReferenceClass对象中存储了两次?

data.tables是否在ReferenceClass对象中存储了两次?,r,data.table,R,Data.table,我不知道这是否只是data.table::tables()的一种奇怪行为,或者这是否是一个问题: library(data.table) TestClass <- setRefClass( Class = "TestClass", fields = list( dt = "data.table" ), methods = list( setTable = function( rows ){ dt <<- data.table

我不知道这是否只是
data.table::tables()
的一种奇怪行为,或者这是否是一个问题:

library(data.table)
TestClass <- setRefClass(  
  Class  = "TestClass",  
  fields = list(
    dt = "data.table"
  ),
  methods = list(
    setTable = function( rows ){
      dt <<- data.table( a = seq_len(rows), b = seq_len(rows) )
    }
  )
)

tc <- TestClass$new()
tc$setTable( rows = 1E7 )

这是否意味着
data.table
实际消耗的内存量是必需的两倍?

答案是否定的:

address(tc$dt) == address(tc$`.->dt`)
[1] TRUE

这要归功于@Arun(见他在我问题下面的评论)。

只需检查
地址(tc$dt)
地址(tc$`.->dt`)
。此报告不特定于ref类
DT@Arun,不知道
address()
。非常感谢。既然我不再期待一个正确的答案,那么我该怎么处理这个问题呢?值得保留吗?Beasterfield,
地址
只是
数据表
中一个很好的实用函数。嗯,你可以自己回答。
address(tc$dt) == address(tc$`.->dt`)
[1] TRUE