У меня есть фреймы данных, похожие на 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 var
s, аргументу было бы дано 5:9
). Я хочу, чтобы функция проводила одномерные тесты Шапиро shapiro_test()
из пакета rstatix
и возвращала переменную и имя группирующей переменной, когда файл. На данный момент моя функция выглядит так, что в основном отражает рабочий процесс, который я использую для выполнения этой работы вне функции:
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
}
Я пробовал несколько разных вариантов этого, но когда я пытаюсь запустить function: 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.
Я не могу понять, что происходит.