如何将向量或列表存储在单个 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
对于 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