У меня есть пакет, который создает вызовы, содержащие статистические данные, которые затем могут отображаться в графиках.
Вот простой пример использования:
# 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
Как можно Я избегаю этой ошибки?