通过引用从函数内部分配环境对象的属性

Assigning attribute of environment object from within function by reference

这是一个简化的例子:

e <- new.env()
e$var <- 'some.val'
attr(e$var, 'attrib') <- 'some.attrib' 
attr(e$var, 'attrib')
#[1] "some.attrib"

assign_new_attrib <- function(obj) {
   attr(obj, 'attrib') <<- 'some.new.attrib'
}

assign_new_attrib(e$var)
#Error in attr(obj, "attrib") <<- "some.new.attrib" : 
#  object 'obj' not found
attr(e$var, 'attrib')
#[1] "some.attrib"

我在环境 e 中有一个变量 var,它有一个属性 attrib。现在我有一个函数 assign_new_attrib,它接受一个对象并为其分配一个新属性 attrib。如您所见,由于 <<- 无法从函数内解析变量,上述代码导致错误 "object 'obj' not found"。

如何定义函数 assign_new_attrib() 以通过引用分配新属性?

来自

如果您想通过引用更改属性,请参阅 data.table 中的 setattr 函数。尝试:

assign_new_attrib_DT <- function(obj) data.table::setattr(obj, 'attrib', 'some.new.attrib')