这是一个简化的例子:
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"
我在环境var
中有一个变量e
,其变量属性为attrib
。现在我有一个函数assign_new_attrib
,它接受一个对象并为其赋予一个新属性attrib
。如您所见,上面的代码导致错误&#34; object&#39; obj&#39;找不到&#34;由于<<-
无法从函数中解析变量这一事实。
如何定义函数assign_new_attrib()
以通过引用分配新属性?
答案 0 :(得分:1)
如果要通过引用更改属性,请参见setattr
中的data.table
函数。试试:
assign_new_attrib_DT <- function(obj) data.table::setattr(obj, 'attrib', 'some.new.attrib')