【发布时间】:2020-02-25 13:16:45
【问题描述】:
我有一个包,它创建包含统计详细信息的调用,然后可以在图中显示。
这是一个简单的用例:
# setup
set.seed(123)
library(statsExpressions)
library(tidyverse)
# two-sample t-test results in an expression
stats_exp <- bf_ttest(mtcars, am, wt)
# class of object
class(stats_exp)
#> [1] "call"
# using the expression to display details in a plot
ggplot(mtcars, aes(as.factor(am), wt)) + geom_boxplot() +
labs(subtitle = stats_exp)
现在假设我想对分组变量的所有级别进行相同类型的可视化。在这种情况下,我需要为每个级别创建并保存调用。
我可以使用tidyr 成功地做到这一点,它可以将call 对象保存在列表列中:
# doing this across groups
(df <- mtcars %>%
group_nest(cyl) %>%
mutate(stats_exp = data %>% map(., ~bf_ttest(., am, wt))))
# A tibble: 3 x 3
cyl data stats_exp
<dbl> <list> <list>
1 4 <tibble [11 × 10]> <language>
2 6 <tibble [7 × 10]> <language>
3 8 <tibble [14 × 10]> <language>
# did it work? yes!
df$stats_exp[[1]]
#> atop(displaystyle(NULL), expr = paste("In favor of null: ", "log"["e"],
#> "(BF"["01"], ") = ", "-1.58", ", ", italic("r")["Cauchy"]^"JZS",
#> " = ", "0.71"))
当我尝试取消嵌套时出现问题,我想这样做,因为我需要在工作流下游的某个地方对此数据帧执行一些其他操作:
# unnest
tidyr::unnest(data = df, cols = c(stats_exp, data))
#> Error: Input must be list of vectors
我怎样才能避免这个错误?
【问题讨论】: