【问题标题】:Create a function with an argument used in a formula使用公式中使用的参数创建函数
【发布时间】:2019-08-24 16:17:18
【问题描述】:

我是创建函数的初学者,我在一些可能是基本的东西上遇到了一些麻烦。

我想创建一个函数,该函数将 data.frame 和变量名称作为参数,并由其他变量返回此变量的线性回归(这样做没有真正意义,我只是在尝试学习如何创建函数)

my_lm <- function(df, var) lm(var~., data = df)

my_lm(diamonds, price)

但我得到这个错误:

评估错误(predvars, data, env):找不到对象“价格”

感谢您的帮助,抱歉英语不好

【问题讨论】:

    标签: r


    【解决方案1】:

    一种解决方案是将price 传递为char,并使用formula() 将字符串转换为lm 的正确对象。

    my_lm <- function(df, var) {
      f = formula(paste0(var, "~.")) # this creates "price ~ ." in the example
      lm(f, data = df)
    }
    
    my_lm(diamonds, var="price")
    

    或者,如果您必须将price 作为“非字符串”传递,则需要NSE

    my_lm <- function(df, var) {
      var = substitute(var)
      f = formula(paste0(var, "~."))
      lm(f, data = df)
    }
    
    my_lm(diamonds, var=price)
    

    【讨论】:

    • 感谢您的帮助,它运作良好。但是,不必在调用中引用变量就可以做到这一点吗?我试过``` my_lm
    • 这正是我想要的,再次感谢
    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多