如何在R中创建可在函数和sql语句中使用的全局变量?

如何在R中创建可在函数和sql语句中使用的全局变量?,r,global-variables,R,Global Variables,我想在R中定义一个可以在函数和sqldf语句中使用的全局变量。我的目标是在我的代码顶部修改一次我想包含的变量,并在整个过程中使用它。这将真的节省我的时间,我一直无法通过搜索论坛找到解决方案 # define variable myvar <<- as.name('cyl') # use within a sql statement library("sqldf") sqldf(' select avg(myvar)

我想在R中定义一个可以在函数和sqldf语句中使用的全局变量。我的目标是在我的代码顶部修改一次我想包含的变量,并在整个过程中使用它。这将真的节省我的时间,我一直无法通过搜索论坛找到解决方案

# define variable
    myvar <<- as.name('cyl')

# use within a sql statement
    library("sqldf")

    sqldf('
        select 
            avg(myvar)
        from 
            mtcars
        ')

# use within a regression
    reg<-lm(mpg ~ myvar, data=mtcars)
    summary(reg)
#定义变量

myvar您可以使用
sprintf
从变量创建查询字符串

myvar <- 'cyl'

query <- sprintf('select avg(%s) from mtcars', myvar)

library("sqldf")

sqldf(query)
正如James在评论中提到的,这可能比
get
更可取:

reg <- lm(formula(paste('mpg~', myvar)), data=mtcars)

reg您可以使用
sprintf
从变量创建查询字符串

myvar <- 'cyl'

query <- sprintf('select avg(%s) from mtcars', myvar)

library("sqldf")

sqldf(query)
正如James在评论中提到的,这可能比
get
更可取:

reg <- lm(formula(paste('mpg~', myvar)), data=mtcars)

reg除非我们在函数中设置
myvar
,否则我们可以直接使用
除非我们在函数中设置
myvar
,我们可以直接使用
我不确定您是否可以将R变量替换为那样的SQL语句。我好像记得我的教授说过这不是possible@RichardScriven:谢谢你的输入-有没有关于替换R语句(比如regersion)中的变量的想法?我可以用R函数替换sql代码。也许这样:我不确定你能不能用R变量替换成这样的sql语句。我好像记得我的教授说过这不是possible@RichardScriven:谢谢你的输入-有没有关于替换R语句(比如regersion)中的变量的想法?我可以用R函数替换sql代码。也许这样:你可能会发现
as.formula(粘贴(“mpg~”,myvar))
比get.Zelazny更可取-你挽救了这一天!!我喜欢“获取”解决方案-完美。或者
do.call(“lm”,list(替换(一些东西))
,而不是
get
,你可能会发现
as.formula(粘贴(“mpg~”,myvar))
比get.Zelazny更可取。你挽救了这一天!!我喜欢“获取”解决方案-完美。或者
do.call(“lm”,list(替换(一些东西))
,而不是
get
eval(substitute(lm(mpg ~ myvar, data = mtcars), list(myvar = myvar)))