非准旋转上下文中的Tidyeval(psych::describeBy(组))

非准旋转上下文中的Tidyeval(psych::describeBy(组)),r,tidyverse,rlang,tidyeval,gt,R,Tidyverse,Rlang,Tidyeval,Gt,我正在尝试创建一个函数,该函数将返回公共psych::descripe()和psych::descripeby()函数结果的gt表 问题是descripeby()期望组参数的形式为data$vector,而不仅仅是group=vector 所以 这对于一般用途来说是很好的——只是需要记住一件事但要在闪亮的应用程序中使用它,我真的需要它采用上面第二次调用的形式。 以下是我目前的功能: description% TIBLE::rownames_to_column()%>% dplyr::select

我正在尝试创建一个函数,该函数将返回公共
psych::descripe()
psych::descripeby()函数结果的
gt

问题是
descripeby()
期望组参数的形式为
data$vector
,而不仅仅是
group=vector

所以

这对于一般用途来说是很好的——只是需要记住一件事但要在闪亮的应用程序中使用它,我真的需要它采用上面第二次调用的形式。

以下是我目前的功能:
description%
TIBLE::rownames_to_column()%>%
dplyr::select(-c(vars))%>%
dplyr::mutate(dplyr::cross(is.numeric,round,2))%>%
gt::gt()%>%
gt::tab_选项(
column_labels.font.size=“小”,
table.font.size=“小”,
row_group.font.size=“小”,
数据_row.padding=px(3)
) %>% 
制表符标题(
title=paste0(“数据描述”)
)
}否则{
数据%>%
psych::describeBy(组=组,快速=快速,mat=真,…)%>%
TIBLE::rownames_to_column()%>%
选择(-c(项目,变量))%>%
dplyr::mutate(dplyr::cross(is.numeric,round,2))%>%
排列(组1)%>%
分组依据(分组1)%>%
gt()%>%
gt::tab_选项(
column_labels.font.size=“小”,
table.font.size=“小”,
row_group.font.size=“小”,
数据_row.padding=px(3))
} %>% 
制表符标题(
标题=粘贴0(“数据描述”),
副标题=粘贴0(“分组依据:”,grp)
)
}

我尝试了很多关于enquo、names()的变体!!,等等,在
组=
调用中,但我不能让它正常工作。有人能帮忙吗?

psych::describeBy
不包含数据参数。因此,您不能直接从数据中使用
group
。如果需要使用该选项,最好使用公式选项。例如:

psych::describeBy(iris~Species)
如果您正在编写函数,请执行以下操作:

my_describe <- function(data, group = NULL, fast = TRUE){
  if(deparse(substitute(group)) == 'NULL')
    psych::describe(data)
  else  psych::describeBy(as.formula(substitute(data~group)))
}

my\u description这感觉应该可以工作,但我仍然得到
错误:未找到对象“grouping\u variable”
error错误来自tidyverse部分中的
gropby
。什么是
group1
?只需试用我在您的数据上编写的
my_descripe
函数。它肯定会起作用。
>my_descripe my_descripe(企鹅,物种)my_descripe(企鹅,物种)中的错误:未找到对象'species'
group1
是descripeby的输出调用分组变量用户输入的内容;有必要对其进行格式化,以便在
gt()
@AndrewMcCartney中使用。我知道问题出在哪里了。给我一秒钟
psych::describeBy(iris~Species)
my_describe <- function(data, group = NULL, fast = TRUE){
  if(deparse(substitute(group)) == 'NULL')
    psych::describe(data)
  else  psych::describeBy(as.formula(substitute(data~group)))
}