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