我正在尝试创建一个自定义函数,它接受 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)
使用 data[[aspect]] 使前 3 个表达式发挥作用,并使用 !!sym(column)
使最终表达式发挥作用