将数据框字段传递给函数中的回归模型

时间:2020-07-17 21:53:58

标签: r function lm

我刚使用R才几个月,这是我的第一篇文章。我正在寻找创建一个函数,该函数从数据框中获取字段,通过分位数过滤异常值,然后将回归参数写为散点图上的注释。过滤和绘图工作正常,但是线性模型出现错误。我可以转换这些字段以在模型中执行吗?

错误消息:

model.frame.default(formula = df [,field1]〜df [,field2],drop.unused.levels = TRUE)中的错误: 变量'df [,field1]'的无效类型(列表)

功能如下:

scatter_filtered <- function(df,field1,field2,field3) {

  range1 <- quantile(df[, field1], probs= c(0.1,0.9), na.rm=TRUE)
  range2 <- quantile(df[, field2], probs= c(0.1,0.9), na.rm=TRUE)

    low_end1 <- range1[1]
    high_end1 <- range1[2]
    low_end2 <- range2[1]
    high_end2 <- range2[2]

  df %>%
filter(df[, field1] > low_end1, df[, field1] < high_end1,
           df[, field2] > low_end2, df[, field2] < high_end2) %>%
    model <- lm(df[,field1] ~ df[, field2])
      r_output <- round(glance(model)$r.squared, digits = 5)
      r_adj_output <- round(glance(model)$adj.r.squared, digits = 5)
      p_output <- round(glance(model)$p.value, digits = 5) %>%
  ggplot(aes_string(x = field1, y = field2, color = field3)) +
    geom_point() +
    geom_smooth(method="lm", se=FALSE) 
    #  annotate("text", label = paste("r_sq:",r_output), x=0.1, y=0.1, parse=TRUE) +
    #  annotate("text", label = paste("p-val:",p_output), x=0.1, y=0.1, parse=TRUE)
}

0 个答案:

没有答案