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

Chr*_*s L 1 r global-variables

我想在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)
Run Code Online (Sandbox Code Playgroud)

Zel*_*ny7 6

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

myvar <- 'cyl'

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

library("sqldf")

sqldf(query)
Run Code Online (Sandbox Code Playgroud)

get检索模型设计中的值:

reg <- lm(mpg ~ get(myvar), data=mtcars)
summary(reg)
Run Code Online (Sandbox Code Playgroud)

正如詹姆斯在评论中提到的那样,这可能比以下情况更可取get:

reg <- lm(formula(paste('mpg~', myvar)), data=mtcars)
Run Code Online (Sandbox Code Playgroud)

  • 您可能会发现`as.formula(paste("mpg~",myvar))`更适合获取. (3认同)