←
PDF 429 / 520 Unnesting
→
English · PDF 429
Original PDF page 429
中文 · PDF 429

#> 4 安哥拉 非洲 <tibble [12 × 4]> <S3: lm> #> 5 阿根廷 美洲 <tibble [12 × 4]> <S3: lm> #> 6 澳大利亚 大洋洲 <tibble [12 × 4]> <S3: lm> #> # ……还有 136 行

这样做有一个很大的优势:因为所有相关的对象都存储在一起,所以在筛选或排列时,你不需要手动保持它们同步。数据框的语义会替你处理好这些:

by_country %>% filter(continent == "Europe") #> # 一个 tibble:30 × 4 #> country continent data model #> #> 1 阿尔巴尼亚 欧洲 <tibble [12 × 4]> <S3: lm> #> 2 奥地利 欧洲 <tibble [12 × 4]> <S3: lm> #> 3 比利时 欧洲 <tibble [12 × 4]> <S3: lm> #> 4 波斯尼亚和黑塞哥维那 欧洲 <tibble [12 × 4]> <S3: lm> #> 5 保加利亚 欧洲 <tibble [12 × 4]> <S3: lm> #> 6 克罗地亚 欧洲 <tibble [12 × 4]> <S3: lm> #> # ... 还有 24 行 by_country %>% arrange(continent, country) #> # 一个 tibble:142 × 4 #> country continent data model #> #> 1 阿尔及利亚 非洲 <tibble [12 × 4]> <S3: lm> #> 2 安哥拉 非洲 <tibble [12 × 4]> <S3: lm> #> 3 贝宁 非洲 <tibble [12 × 4]> <S3: lm> #> 4 博茨瓦纳 非洲 <tibble [12 × 4]> <S3: lm> #> 5 布基纳法索 非洲 <tibble [12 × 4]> <S3: lm> #> 6 布隆迪 非洲 <tibble [12 × 4]> <S3: lm> #> # ... 还有 136 行

如果你的数据框列表和模型列表是分开的对象,那么你必须记住:每当你对其中一个向量重新排序或取子集时,都需要对其他所有向量重新排序或取子集,以保持它们同步。如果忘记了,你的代码仍会继续运行,但会给出错误的结果!

展开嵌套

之前我们用单个数据集计算了单个模型的残差。现在我们有 142 个数据框和 142 个模型。要计算残差,我们需要对每个模型–数据对调用 add_residuals():