【问题标题】:Replacing attach() with with() in a function在函数中用 with() 替换 attach()
【发布时间】:2014-01-11 22:51:58
【问题描述】:

我试图在函数中用 with() 替换 attach()。我在下面创建了一个模拟问题的简单示例。我希望能够使用数据集中的特定变量,并且能够修改该变量(例如,平方或除以 1000,如下所示)。

dummy.data=data.frame(CVD=1:10,pop=1:10)

# this works
working=function(data,offset){
  attach(data)
  b=offset
  print(summary(b))
  detach(data)
}
working(dummy.data,pop/1000)

# this does not work
not.working=function(data,offset){
  with(data,b=offset)
  print(summary(b))
}

not.working(dummy.data,pop/1000)

【问题讨论】:

    标签: r function


    【解决方案1】:

    这做同样的操作,但这个练习的目标对我来说仍然是不透明的:

    now.working=function(data,offset){
      b=offset; cat(str(b))
      with(data, print(summary(eval(b))))
    }
    
    now.working(dummy.data,expression(pop/1000) )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2016-04-24
      相关资源
      最近更新 更多