通过引用从函数内部分配环境对象的属性
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')
这是一个简化的例子:
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')