tidyr 1.0.0 為 nest()
和 unnest()
引入了新語法。大多數現有用法應自動轉換為新語法,並帶有警告。但是,如果您需要快速回滾到以前的行為,這些函數提供了以前的接口。要使舊代碼按原樣工作,請將以下代碼添加到腳本頂部:
library(tidyr)
nest <- nest_legacy
unnest <- unnest_legacy
用法
nest_legacy(data, ..., .key = "data")
unnest_legacy(data, ..., .drop = NA, .id = NULL, .sep = NULL, .preserve = NULL)
參數
- data
-
一個 DataFrame 。
- ...
-
要取消嵌套的列的規範。使用裸變量名或變量函數。如果省略,則默認為所有list-cols。
- .key
-
新列的名稱,作為字符串或符號。該參數通過表達式傳遞並支持quasiquotation(您可以取消引用字符串和符號)。該名稱是從帶有
rlang::ensym()
的表達式中捕獲的(請注意,這種符號不代表實際對象的接口現在在 tidyverse 中不鼓勵使用;我們在這裏支持它是為了向後兼容)。 - .drop
-
是否應該刪除其他列表列?默認情況下,如果取消指定列的嵌套需要複製行,
unnest()
將刪除它們。 - .id
-
DataFrame 標識符 - 如果提供,將創建一個名為
.id
的新列,提供唯一標識符。如果列表列已命名,這將非常有用。 - .sep
-
如果非
NULL
,則未嵌套 DataFrame 列的名稱將組合原始 list-col 的名稱與嵌套 DataFrame 的名稱,並用.sep
分隔。 - .preserve
-
(可選)要在輸出中保留的列表列。它們將以與原子向量相同的方式進行複製。這具有
dplyr::select()
語義,因此您可以使用.preserve = c(x, y)
或.preserve = starts_with("list")
保留多個變量。
例子
# Nest and unnest are inverses
df <- tibble(x = c(1, 1, 2), y = 3:1)
df %>% nest_legacy(y)
#> # A tibble: 2 × 2
#> x data
#> <dbl> <list>
#> 1 1 <tibble [2 × 1]>
#> 2 2 <tibble [1 × 1]>
df %>% nest_legacy(y) %>% unnest_legacy()
#> # A tibble: 3 × 2
#> x y
#> <dbl> <int>
#> 1 1 3
#> 2 1 2
#> 3 2 1
# nesting -------------------------------------------------------------------
as_tibble(iris) %>% nest_legacy(!Species)
#> # A tibble: 3 × 2
#> Species data
#> <fct> <list>
#> 1 setosa <tibble [50 × 4]>
#> 2 versicolor <tibble [50 × 4]>
#> 3 virginica <tibble [50 × 4]>
as_tibble(chickwts) %>% nest_legacy(weight)
#> # A tibble: 6 × 2
#> feed data
#> <fct> <list>
#> 1 horsebean <tibble [10 × 1]>
#> 2 linseed <tibble [12 × 1]>
#> 3 soybean <tibble [14 × 1]>
#> 4 sunflower <tibble [12 × 1]>
#> 5 meatmeal <tibble [11 × 1]>
#> 6 casein <tibble [12 × 1]>
# unnesting -----------------------------------------------------------------
df <- tibble(
x = 1:2,
y = list(
tibble(z = 1),
tibble(z = 3:4)
)
)
df %>% unnest_legacy(y)
#> # A tibble: 3 × 2
#> x z
#> <int> <dbl>
#> 1 1 1
#> 2 2 3
#> 3 2 4
# You can also unnest multiple columns simultaneously
df <- tibble(
a = list(c("a", "b"), "c"),
b = list(1:2, 3),
c = c(11, 22)
)
df %>% unnest_legacy(a, b)
#> # A tibble: 3 × 3
#> c a b
#> <dbl> <chr> <dbl>
#> 1 11 a 1
#> 2 11 b 2
#> 3 22 c 3
# If you omit the column names, it'll unnest all list-cols
df %>% unnest_legacy()
#> # A tibble: 3 × 3
#> c a b
#> <dbl> <chr> <dbl>
#> 1 11 a 1
#> 2 11 b 2
#> 3 22 c 3
相關用法
- R tidyr nest 將行嵌套到 DataFrame 的列表列中
- R tidyr separate_rows 將折疊的列分成多行
- R tidyr extract 使用正則表達式組將字符列提取為多列
- R tidyr chop 砍伐和砍伐
- R tidyr pivot_longer_spec 使用規範將數據從寬轉為長
- R tidyr unnest_longer 將列表列取消嵌套到行中
- R tidyr uncount “計數” DataFrame
- R tidyr cms_patient_experience 來自醫療保險和醫療補助服務中心的數據
- R tidyr pivot_wider_spec 使用規範將數據從長軸轉向寬軸
- R tidyr replace_na 將 NA 替換為指定值
- R tidyr unnest_wider 將列表列取消嵌套到列中
- R tidyr full_seq 在向量中創建完整的值序列
- R tidyr separate 使用正則表達式或數字位置將字符列分成多列
- R tidyr pivot_wider 將數據從長軸轉向寬軸
- R tidyr separate_longer_delim 將字符串拆分為行
- R tidyr gather 將列收集到鍵值對中
- R tidyr hoist 將值提升到列表列之外
- R tidyr pivot_longer 將數據從寬轉為長
- R tidyr pack 打包和拆包
- R tidyr separate_wider_delim 將字符串拆分為列
- R tidyr drop_na 刪除包含缺失值的行
- R tidyr fill 用上一個或下一個值填充缺失值
- R tidyr tidyr_legacy 舊名稱修複
- R tidyr complete 完成缺少數據組合的 DataFrame
- R tidyr expand 擴展 DataFrame 以包含所有可能的值組合
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Legacy versions of nest() and unnest()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。