我正在尝试创建一个函数,该函数将返回一个gt
公共psych::describe()
和psych::describeBy()
函数的结果表。
问题是describeBy()
期望 group 参数是 formdata$vector
而不仅仅是group = vector
.
所以
describeBy(data, data$group)
# works
describeBy(data, group)
# doesn't work
这对于一般用途来说很好 - 只是要记住的事情。但是要在一个闪亮的应用程序中使用它,我真的需要它采取上述第二次调用的形式。
到目前为止,这是我的功能:
description<-function(data, group = NULL, fast = TRUE, ...) {
grp<-paste0(deparse(substitute(group)))
#print(grp)
if(is.null(group)) {
data %>%
psych::describe(fast = fast, ...) %>%
tibble::rownames_to_column() %>%
dplyr::select(-c(vars)) %>%
dplyr::mutate(dplyr::across(is.numeric, round, 2)) %>%
gt::gt() %>%
gt::tab_options(
column_labels.font.size = "small",
table.font.size = "small",
row_group.font.size = "small",
data_row.padding = px(3)
) %>%
tab_header(
title = paste0("Data Description")
)
} else {
data %>%
psych::describeBy(group = group, fast = fast, mat= TRUE, ...) %>%
tibble::rownames_to_column() %>%
select(-c(item, vars)) %>%
dplyr::mutate(dplyr::across(is.numeric, round, 2)) %>%
arrange(group1) %>%
group_by(group1) %>%
gt() %>%
gt::tab_options(
column_labels.font.size = "small",
table.font.size = "small",
row_group.font.size = "small",
data_row.padding = px(3))
} %>%
tab_header(
title = paste0("Data Description") ,
subtitle = paste0("Grouped by: ", grp )
)
}
我在通话中尝试了很多关于 enquo、names()、!! 等的变体group =
,但我无法让它正常工作。任何人都可以帮忙吗?