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 arguments
my_fun <- function(var_name, df){
    glm(y ~ var_name, data = df, family = "binomial")
}

当我尝试使用该功能时,我收到以下错误消息

my_fun(var1, my_df)
Error in eval(expr, envir, enclos) : object 'var1' not found 

# What I want the function to do
glm(y ~ var1, data = my_df, family = "binomial")

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

mt1022

您可以使用以下命令解析未var_name引号substitute

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(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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将列名作为参数传递给R函数

将列名作为函数参数传递-R

R,使用dplyr :: filter()和%in%将列名作为参数传递给函数

R如何添加列名作为标题

如何在Python代码中使用rpy2将R函数作为参数传递

如何在函数中使用字符作为R中的参数?

将列拆分为相邻列,在R中使用行名作为新列名

在r中使用变量作为函数参数

如何在R中使用公式对象

在R中使用公式参数的麻烦使用函数

变量名作为函数中的参数 - ggplot R

如何在使用 R 中公式的函数中使用数据框中的变量?

在R中:将列名称作为参数传递,并在dplyr :: mutate()和lazyeval :: interp()函数中使用它

在R中使用par()函数时如何在直方图中添加列名

在Logit模型中使用R中margins函数的“ at”参数

在R中使用字符串作为函数参数

R:在矢量展开函数中使用向量作为关键参数

如何在手动创建的函数中使用变量名作为参数?

将模型公式作为R中的参数传递

如何在Power Query中使用R变换步骤获取线性回归模型参数

如何在R中使用固定公式计算列

如何在Tableau R集成中使用表数据作为参数?

如何在Tableau R集成中使用表数据作为参数?

如何在参数中使用字符作为变量名?[R]

如何在r中使用带有多个参数的函数列表的应用函数?

在R中:如何获取CSV文件的列名作为列表,并获取值作为列表的列表

如何使用dplyr :: summarise_at()将列名传递给R中的模型公式

在从现有表插入到中使用列名作为参数

如何在Sparklyr中使用R函数