←
PDF 440 / 520 From a Named List
→
English · PDF 440
Original PDF page 440
中文 · PDF 440

不过,你可以将结果包装在一个列表中!这符合 summarize() 的约定,因为现在每个摘要都是一个长度为 1 的列表(向量):

mtcars %>% group_by(cyl) %>% summarize(q = list(quantile(mpg))) #> # A tibble: 3 × 2 #> cyl q #> #> 1 4 <dbl [5]> #> 2 6 <dbl [5]> #> 3 8 <dbl [5]>

要让 unnest() 产生有用的结果,你还需要捕获概率:

probs <- c(0.01, 0.25, 0.5, 0.75, 0.99) mtcars %>% group_by(cyl) %>% summarize(p = list(probs), q = list(quantile(mpg, probs))) %>% unnest() #> # A tibble: 15 × 3 #> cyl p q #> #> 1 4 0.01 21.4 #> 2 4 0.25 22.8 #> 3 4 0.50 26.0 #> 4 4 0.75 30.4 #> 5 4 0.99 33.8 #> 6 6 0.01 17.8 #> # ... 还有 9 行

来自命名列表

带有列表列的数据框为常见问题提供了解决方案:如果你想同时遍历列表的内容及其元素,该怎么办?与其试图把所有东西都塞进一个对象,不如创建一个数据框,这通常更容易:一列可以包含元素,另一列可以包含列表。从列表创建这种数据框的一个简单方法是 tibble::enframe():

x <- list( a = 1:5, b = 3:4, c = 5:6 )