代码之家  ›  专栏  ›  技术社区  ›  Davor Josipovic

通过引用从函数内指定环境对象的属性

  •  2
  • Davor Josipovic  · 技术社区  · 7 年前

    以下是一个简化示例:

    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 它接受一个对象并为其指定一个新属性 属性 . 如您所见,由于以下事实,上述代码导致错误“未找到对象‘obj’” <<-

    如何定义函数 assign_new_attrib() 要通过引用指定新属性?

    1 回复  |  直到 7 年前
        1
  •  1
  •   zx8754    6 年前

    comments by nicola :

    setattr 函数来自 data.table ,如果要通过引用更改属性。尝试:

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