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