R:使用 df 的列名称作为自定义函数的输入

问题描述 投票:0回答:1

我正在尝试创建一个自定义函数,它接受 df 和我想要应用该函数的列的名称。但是我在调用我的函数时遇到问题。

当我输入不带括号的列名称时,我收到“错误:未找到对象‘区域’”。当我输入列名称作为字符时,我收到“model.frame.default(form, data) 中的错误: 可变长度不同(针对“治疗”发现)”。

我猜我需要在函数内重新表征我的列名称,但我不知道该怎么做。

AssumTests <- function(data, aspect){
  # Homogeneity of Variance test
  lt <- leveneTest(aspect ~ Treatment, 
             data = data)
  
  model  <- lm(aspect ~ Treatment, data = data)
  
  # Normality residuals as group
  qq <- ggqqplot(residuals(model))
  st <- shapiro_test(residuals(model))
  
  # Normality test by group
  qqfac <- ggqqplot(data, paste(aspect), facet.by = "Treatment")
  spfac <- data %>%
    group_by(Treatment) %>%
    shapiro_test(aspect)
  
  list = list(lt, qq, st, qqfac, spfac)
  return(list)
}
AssumTests(FluorByTreatment_Iter1.df, "Area")

交叉发布到:Reddit

更新: 第一个表达式可以与

data[[aspect]]
一起使用,但使用 dplyr 管道处理最后一个表达式时仍然遇到问题。我尝试了
{{aspect}}
技巧,但 R 仍然识别引号:“列
"Area"
不存在。”

更新2:最终的表达式可以工作,感谢这个Reddit评论使用

!!sym(column)

r dataframe function character
1个回答
0
投票

使用 data[[aspect]] 使前 3 个表达式发挥作用,并使用 !!sym(column)

使最终表达式发挥作用
© www.soinside.com 2019 - 2024. All rights reserved.