Я пытаюсь создать функцию, которая сведет к минимуму количество раз, когда мне придется рассчитывать все характеристики по отдельности (Мин, Медиана, Макс, Среднее, SD и NA). Я включил первые две части этого большого списка, и как этот список используется.
list("Child Age" =
list("Min" = ~ min(.data$ChildAge,na_rm = TRUE),
"Median" = ~ median(.data$ChildAge,na_rm = TRUE),
"Mean ± SD" = ~ qwraps2::mean_sd(.data$ChildAge,na_rm = TRUE),
"Max" = ~ max(.data$ChildAge,na_rm = TRUE),
"NA (Not factored in analysis)" = ~ percent(sum(is.na(.data$ChildAge)) /length(.data$ChildAge))),
"Child Gender" =
list("Girl" = ~ qwraps2::n_perc(.data$ChildGender == "Girl", na_rm = TRUE),
"Boy" = ~ qwraps2::n_perc(.data$ChildGender == "Boy", na_rm = TRUE))
......
by_clinic_demographic <- summary_table(dplyr::group_by(df, Clinic), demographic_summary)
by_clinic_demographic
Я попытался разработать функцию, которая будет работать:
analysis_func <- function(x=df$StudyID) {
list1 <- list("Min" = min(x,na.rm = TRUE),
"Median" = median(x,na.rm = TRUE),
"Mean ± SD" = qwraps2::mean_sd(x,na_rm = TRUE),
"Max" = max(x,na.rm = TRUE),
"NA (Not factored in analysis)" = percent(sum(is.na(x)) /length(x)))
#str(list1)
return(list1)
}
Когда я тогда go вызову эту функцию в новом списке:
assessment_summary <-
list("Mother Age" = analysis_func(.data$MotherAge),,
Я получаю ошибку: Ошибка: x
должна быть формулой
Когда я добавляю ~ после знака =, например:
"Min" = ~ min(x,na.rm = TRUE)
Затем я получаю ошибку: Ошибка в FUN (X [[i]], ...): определяется только для фрейма данных со всеми цифрами c переменных
Здесь упрощенная версия, чтобы подчеркнуть проблему, с которой я столкнулся:
analysis_func <- function(x=df$StudyID) {
list1 <- list("Min" = ~ min(x,na.rm = TRUE),
"Median" = ~ median(x,na.rm = TRUE),
"Mean ± SD" = ~ qwraps2::mean_sd(x,na_rm = TRUE),
"Max" = ~ max(x,na.rm = TRUE),
"NA (Not factored in analysis)" = ~ percent(sum(is.na(x)) /length(x)))
return(list1)
}
test_summary <-
list("Scores" = analysis_func(.data$StudyID))
# test_stack <- summary_table(dplyr::group_by(dataframe, s), test_summary)
# test_stack
n = c(2, 3, 5, 4,10,12,rep(10,4))
s = c(rep("aa",5),rep("bb",5))
dataframe <- data.frame (n,s)
test_summary2 <-
list("Scores" =
list("Min" = ~ min(.data$n,na_rm = TRUE),
"Median" = ~ median(.data$n,na_rm = TRUE),
"Mean ± SD" = ~ qwraps2::mean_sd(.data$n,na_rm = TRUE),
"Max" = ~ max(.data$n,na_rm = TRUE),
"NA (Not factored in analysis)" = ~ percent(sum(is.na(.data$n)) /length(.data$n)))
)
test_stack <- summary_table(dplyr::group_by(dataframe, s), test_summary2)
test_stack
Любая помощь будет принята.