R-如何将列名用作函数中的参数并插入到模型公式中

R-如何将列名用作函数中的参数并插入到模型公式中,r,R,我想要一个函数,其中的参数可以采用变量名(这是数据集的一部分,但不作为对象存储在环境中),并将该变量名插入到模型公式中 例如: # Some data with a couple of variables my_df <- data.frame(y = rbinom(10, 1,0.5), var1 = runif(10), var2 = runif(10)) # A function that fits a model using predictor specified in the

我想要一个函数,其中的参数可以采用变量名(这是数据集的一部分,但不作为对象存储在环境中),并将该变量名插入到模型公式中

例如:

# Some data with a couple of variables
my_df <- data.frame(y = rbinom(10, 1,0.5), var1 = runif(10), var2 = runif(10))

# A function that fits a model using predictor specified in the arguments
my_fun <- function(var_name, df){
    glm(y ~ var_name, data = df, family = "binomial")
}

有没有办法让这种功能发挥作用

您可以使用
substitute
解析未引用的
var\u name

my_fun <- function(var_name, df){
    glm.formula <- substitute(y ~ x, list(x = substitute(var_name)))
    glm(glm.formula, data = df, family = "binomial")
}

您可以使用
substitute
解析未引用的
var\u name

my_fun <- function(var_name, df){
    glm.formula <- substitute(y ~ x, list(x = substitute(var_name)))
    glm(glm.formula, data = df, family = "binomial")
}

在my_fun内部,您可以使用
glm(重新格式化(var_name,“y”),data=df,family=“二项式”)
然后使用
my_fun(“var1”,df)
运行回归。在my_fun内部,您可以使用
glm(重新格式化(var_name,“y”),data=df,family=“二项式”)
然后使用
my_fun(“var1”,df)
运行回归。
my_fun(var1, my_df)

# Call:  glm(formula = glm.formula, family = "binomial", data = df)
# 
# Coefficients:
# (Intercept)         var1  
#      -1.226        3.108  
# 
# Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
# Null Deviance:        13.46 
# Residual Deviance: 11.35  AIC: 15.35

glm(y ~ var1, data = my_df, family = "binomial")

# Call:  glm(formula = y ~ var1, family = "binomial", data = my_df)
# 
# Coefficients:
# (Intercept)         var1  
#      -1.226        3.108  
# 
# Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
# Null Deviance:        13.46 
# Residual Deviance: 11.35  AIC: 15.35