如何将向量或列表存储在单个 tibble 单元格中?

How can I store a vector or list in a single tibble cell?

对于 tibble 中的每一行,对 quantile() 的函数调用将生成多个值。如何将每个放在不同的列中?

我试过将整个集合放在一个临时列中,但这似乎不起作用。

tibble(category = LETTERS[1:10]) %>% 
  rowwise() %>% 
  # put everything in a temporary "range" column
  mutate(range = quantile(rnorm(100), c(0.025, 0.975), names = FALSE) ) %>% 
  # put each value in a column
  mutate(lo = range[[1]], hi = range[[2]]) %>% 
  ungroup() %>% 
  select(-range)

您可以使用依赖于 purrr::map 的方法。 对于每一行,您计算分位数并使用“enframe”将结果保存到小标题中。 然后你取消嵌套结果:

library(tidyverse)
df <- tibble(count = c(100, 1000, 10000))

set.seed(1)
df %>%
  mutate(q = map(count, ~quantile(rnorm(.x), c(0.025, 0.975)) %>% 
                   enframe %>% 
                   spread(name, value))) %>%
  unnest(q)

# A tibble: 3 x 3
  count `2.5%` `97.5%`
  <dbl>  <dbl>   <dbl>
1   100  -1.67    1.80
2  1000  -2.13    2.01
3 10000  -1.99    1.97