←
PDF 436 / 520 #> 1 1, 2, 3 1, 2 #> 2 3, 4, 5 3, 4, 5
→
English · PDF 436
Original PDF page 436
中文 · PDF 436

#> 1 1, 2, 3 1, 2 #> 2 3, 4, 5 3, 4, 5

Tibble 通过更懒惰的方式(tibble() 不会修改其输入)以及提供更好的打印方法来缓解这个问题:

tibble( x = list(1:3, 3:5), y = c("1, 2", "3, 4, 5") ) #> # A tibble: 2 × 2 #> x y #> #> 1 <int [3]> 1, 2 #> 2 <int [3]> 3, 4, 5

使用 tribble() 会更加简单,因为它可以自动判断出你需要一个列表:

tribble( ~x, ~y, 1:3, "1, 2", 3:5, "3, 4, 5" ) #> # A tibble: 2 × 2 #> x y #> #> 1 <int [3]> 1, 2 #> 2 <int [3]> 3, 4, 5

列表列通常作为中间数据结构最为有用。直接操作它们比较困难,因为大多数 R 函数处理的是原子向量或数据框,但将相关条目保存在一个数据框中的好处值得一点小小的麻烦。

一般来说,一个有效的列表列工作流程包含三个部分:

    1. 你可以使用 nest()、summarize() + list() 或 mutate() + 一个 map 函数来创建列表列,如第 411 页的“创建列表列”中所述。
    1. 你可以通过使用 map()、map2() 或 pmap() 转换现有的列表列来创建其他中间列表列。例如,在前面的案例研究中,我们通过转换数据框的列表列创建了模型的列表列。
    1. 你将列表列简化回数据框或原子向量,如第 416 页的“简化列表列”中所述。