从R中的引号中删除元素

从R中的引号中删除元素,r,model,paste,R,Model,Paste,我正在尝试构建一个R应用程序,让用户为模型选择变量。用户选择的元素被放入向量中。我如何删除引号,以及在它们选择的每个元素之间放置空格,作为模型中的变量 例如: > vars <- c("cyl", "disp", "hp") > my.model <- lm(mpg ~ paste(vars, collapse = "+"), data = mtcars) 通过阅读Stackoverflow上的其他类似问题,有人建议使用as.name删除引号,但这会产生另一个错误: &

我正在尝试构建一个R应用程序,让用户为模型选择变量。用户选择的元素被放入向量中。我如何删除引号,以及在它们选择的每个元素之间放置空格,作为模型中的变量

例如:

> vars <- c("cyl", "disp", "hp")
> my.model <- lm(mpg ~ paste(vars, collapse = "+"), data = mtcars)
通过阅读Stackoverflow上的其他类似问题,有人建议使用as.name删除引号,但这会产生另一个错误:

> vars <- c("cyl", "disp", "hp")
> my.model <- lm(mpg ~ as.name(paste(vars, collapse = "+")), data = mtcars)
Error in model.frame.default(formula = mpg ~ as.name(paste(vars, collapse = "+")),  :
invalid type (symbol) for variable 'as.name(paste(vars, collapse = "+"))'

公式不仅仅是没有引号的字符串。这是一组未经评估的符号。尝试使用内置的重新格式化函数来构建公式

vars <- c("cyl", "disp", "hp")
my.model <- lm(reformulate(vars,"mpg"), data = mtcars)

公式不仅仅是没有引号的字符串。这是一组未经评估的符号。尝试使用内置的重新格式化函数来构建公式

vars <- c("cyl", "disp", "hp")
my.model <- lm(reformulate(vars,"mpg"), data = mtcars)
as.formula应该能够将字符串强制转换为公式

lm(as.formula((paste("mpg ~", paste(vars, collapse = "+")))), data = mtcars)

#Call:
#lm(formula = as.formula((paste("mpg ~", paste(vars, collapse = "+")))), 
#    data = mtcars)

#Coefficients:
#(Intercept)          cyl         disp           hp  
#   34.18492     -1.22742     -0.01884     -0.01468  
as.formula应该能够将字符串强制转换为公式

lm(as.formula((paste("mpg ~", paste(vars, collapse = "+")))), data = mtcars)

#Call:
#lm(formula = as.formula((paste("mpg ~", paste(vars, collapse = "+")))), 
#    data = mtcars)

#Coefficients:
#(Intercept)          cyl         disp           hp  
#   34.18492     -1.22742     -0.01884     -0.01468