我在调用ReferenceClass
个对象的方法时遇到问题,并通过引用data.table
列(data.table
版本1.9.3,R版本3.1)直接指定返回值最小的例子显示:
RF <- setRefClass(
Class = "RF",
methods = list(
get = function() { "/foo/bar" }
)
)
rf <- RF$new()
mdt <- data.table( x= c("a", "b"), y = 1:2 )
mdt[ , z := rf$get() ] # gives warning
> mdt$z
[[1]]
`$`
[[2]]
rf
mdt[ , rf$get() ]
按预期工作,而mdt[ , list( z = rf$get()) ][ , z]
也会产生奇怪的结果,mdt[ , unlist(list( z = rf$get())) ]
会出错。
我不需要在rf$get()
之外评估mdt
之类的解决方案,然后分配结果。我很想了解这里发生了什么,因为我正在大量使用data.tables
和ReferenceClasses
,并希望能够将它们妥善使用。