访问在eval中初始化的变量

时间:2016-03-07 01:30:00

标签: r scope

有人可以解释如何访问eval语句中创建的变量吗?我知道这个问题还有很多其他解决方案,但我想了解为什么我在这里遇到了范围问题。

错误

Error in paste0("fit<-summary(lm(NPISplit~", x, ",data=df));rs<-round(fit$r.squared,3);pv<-round(fit$coefficients[,4],3);if(pv<0.05){paste(",  : 
object 'rs' not found 

代码

df<-data.frame(NPISplit=c(0,0,0,1,1,1),Happiness=c(2,5,6,8,7,4))
moods<-c('Happiness')
lapply(moods,function(x){
    eval(parse(text=paste0(
        "fit<-summary(lm(NPISplit~",x,",data=df));rs<-round(fit$r.squared,3);pv<-round(fit$coefficients[,4],3);if(pv<0.05){paste(",x,"=",rs,"&",pv,")}")))
    })

1 个答案:

答案 0 :(得分:1)

你只需要在引号内转义引号。

x <- 1
lapply(1:2, function(.) eval(parse(text="y<-x+1;paste(\"y=\", y)")))