Довольно легко с помощью функции combn (). Единственное, что вы должны принять во внимание, это то, что combn не будет правильно возвращать имена групп, когда вы помещаете вызов fisher.test () в функцию.
Таким образом, нам нужно соответствующим образом настроить элемент в списке:
Некоторые данные игрушек:
mortal <- data.frame(
alv.dead = sample(c("alv","dead"),30,replace=T),
train = sample(letters[1:3],30,replace=T),
capsule = sample(letters[4:5],30,replace=T),
cassette = sample(letters[6:7],30,replace=T)
)
Некоторые дополнительные переменные
mortal$groups <- paste(mortal$train,mortal$capsule,mortal$cassette,sep="")
unique.groups <- unique(mortal$groups)
И хитрость:
combn(unique.groups,2,function(x){
id <- mortal$groups %in% x
test <- fisher.test(table(mortal$alv.dead[id],mortal$groups[id]))
test$data.name <-
paste(
unique(
as.character(mortal$groups[id])
),collapse="-")
return(test)}
,simplify=FALSE)