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

时间:2014-05-20 12:26:35

标签: 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( a = seq_len(rows), b = seq_len(rows) )
    }
  )
)

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

当我查看内存消耗时,我会得到

tables( env=tc )
     NAME        NROW MB COLS KEY
[1,] .->dt 10,000,000 77 a,b     
[2,] dt    10,000,000 77 a,b     
Total: 154MB

这是否意味着data.table真的消耗的内存量是必要的两倍?

1 个答案:

答案 0 :(得分:1)

答案是否定的:

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

归功于@Arun(请参阅我的问题下面的评论)。