#r #function
#r #функция
Вопрос:
Я пытаюсь написать функцию, которая вычисляет pairwise_t_test
для заданной ковариации в моем фрейме данных.
pairs <- function(df, covariate, group){
pwc <- pairwise_t_test(data = df, formula = covariate ~ group, paired = FALSE )
print(pwc)
}
pairs(df = df_test_TS, covariate = "is_donor", group = "w.contextual")
И я тоже пытался :
pairs(df = df_test_TS, covariate = is_donor, group = w.contextual)
Но они возвращают:
Ошибка: не удается извлечь столбцы, которые не существуют. Столбец ✖
group
не существует.
Или:
Ошибка: не удается извлечь столбцы, которые не существуют. Столбец ✖
covariate
не существует.
Переменные в на самом деле являются именами столбцов во фрейме данных, поэтому я не понимаю ошибки.
Ответ №1:
ошибка возникает из-за того, что в df нет столбца group или covariate:
as.character(covariate ~ group)
[1] "~" "covariate" "group"
таким образом, формула будет подталкивать pairwise_t_test
к поиску ковариации и группы в data.frame
pairs <- function(df, covariate, group){
covariate <- substitute(covariate)
group <- substitute(group)
pairwise_t_test(data = df, formula = as.formula(paste0(covariate, "~", group)), paired = FALSE )
}
pairs(df, len , supp)
# A tibble: 1 x 9
.y. group1 group2 n1 n2 p p.signif p.adj p.adj.signif
* <chr> <chr> <chr> <int> <int> <dbl> <chr> <dbl> <chr>
1 len OJ VC 30 30 0.0604 ns 0.0604 ns
pairs(df, "len" , "supp")
# A tibble: 1 x 9
.y. group1 group2 n1 n2 p p.signif p.adj p.adj.signif
* <chr> <chr> <chr> <int> <int> <dbl> <chr> <dbl> <chr>
1 len OJ VC 30 30 0.0604 ns 0.0604 ns
данные
data("ToothGrowth")
df <- ToothGrowth
Ответ №2:
Попробуйте использовать функцию as.formula
следующим образом:
pairs <- function(df, covariate, group){
pwc <- pairwise_t_test(data = df,
formula = as.formula(paste0(covariate,"~",group)),
paired = FALSE )
print(pwc)
}
pairs(df = df_test_TS, covariate = "is_donor", group = "w.contextual")