我正在创建一个使用a data.table作为数据集的包,并有一些函数,通过引用使用:=.
我已经构建了一个简单的包来演示我的 problem
library(devtools)
install_github('foo','mnel')
Run Code Online (Sandbox Code Playgroud)
它包含两个功能
foo <- function(x){
x[, a := 1]
}
fooCall <- function(x){
eval(substitute(x[, a :=1]),parent.frame(1))
}
Run Code Online (Sandbox Code Playgroud)
和DT使用创建的数据集(不是延迟加载)
DT <- data.table(b = 1:5)
save(DT, file = 'data/DT.rda')
Run Code Online (Sandbox Code Playgroud)
当我安装这个软件包时,我的理解是foo(DT)应该通过引用来分配DT.
library(foo)
data(DT)
foo(DT)
b a
1: 1 1
2: 2 1
3: 3 1
4: 4 1
5: 5 1
# However this has not assigned by reference within `DT`
DT
b
1: 1
2: 2
3: 3 …Run Code Online (Sandbox Code Playgroud)