【发布时间】:2020-09-13 18:58:38
【问题描述】:
我在下面创建了类似于dat1 的数据框:
dat1 <- data.frame(Region = rep(c("r1","r2"), each = 100),
State = rep(c("NY","MA","FL","GA"), each = 10),
Loc = rep(c("a","b","c","d","e","f","g","h"),each = 5),
ID = rep(c(1:10), each=2),
var1 = rnorm(200),
var2 = rnorm(200),
var3 = rnorm(200),
var4 = rnorm(200),
var5 = rnorm(200))
我正在尝试创建一个函数,允许我指定数据、分组变量(Region、State 或 Loc)和变量列(例如,var1:var5)。我想指定 var 列作为与我指定的任何数据框相关联的列号(因此,如果我想在此处执行所有 5 个 vars,则将给出参数 5:9)。我希望该函数从 rstatix 包中进行单变量 shapiro 测试 shapiro_test(),并在 .
到目前为止,我的函数看起来像这样,主要反映了我用来在函数之外完成这项工作的工作流程:
library(rstatix)
UnivShapiro <- function(dat, groupvar, columns){
var.list <- paste(names(dat[columns]),collapse=",")
result<-
dat%>%
group_by(paste(groupvar))%>%
shapiro_test(vars=paste(var.list))%>%
arrange(variable)%>%
dplyr::filter(p<0.05)
result
}
我已经尝试了几种不同的变体,但是当我尝试运行该函数时:UnivShapiro(dat=dat1, groupvar="Region", columns = 5:9),我收到一条错误消息:Error: Can't subset columns that don't exist. x The column var1,var2,var3,var4,var5 doesn't exist. 我无法弄清楚发生了什么。
【问题讨论】:
标签: r function functional-programming