在函数中用with()替换attach()

时间:2014-01-11 22:51:58

标签: r function

我试图在函数中用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)

1 个答案:

答案 0 :(得分:1)

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

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

now.working(dummy.data,expression(pop/1000) )