當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R tidyr hoist 將值提升到列表列之外


hoist() 允許您有選擇地將列表列的組件拉入它們自己的頂級列,使用與 purrr::pluck() 相同的語法。

vignette("rectangle") 中了解更多信息。

用法

hoist(
  .data,
  .col,
  ...,
  .remove = TRUE,
  .simplify = TRUE,
  .ptype = NULL,
  .transform = NULL
)

參數

.data

一個 DataFrame 。

.col

< tidy-select > 要從中提取組件的列表列。

...

< dynamic-dots > .col 的組件將轉換為 col_name = "pluck_specification" 形式的列。您可以使用字符向量按名稱進行提取,使用整數向量按位置進行提取,或者使用兩者的組合使用列表進行提取。有關詳細信息,請參閱purrr::pluck()

在調用 hoist() 時,列名稱必須是唯一的,但現有的同名列將被覆蓋。當使用單個字符串撥弦時,您可以選擇省略名稱,即 hoist(df, col, "x")hoist(df, col, x = "x") 的簡寫。

.remove

如果是 TRUE (默認情況下)將從 .col 中刪除提取的組件。這確保了每個值隻存在於一個地方。如果從 .col 中刪除所有組件,則 .col 將從結果中完全刪除。

.simplify

如果是 TRUE ,將嘗試將長度為 1 的向量列表簡化為原子向量。也可以是包含 TRUEFALSE 的命名列表,聲明是否嘗試簡化特定列。如果提供了命名列表,則任何未指定列的默認值是 TRUE

.ptype

(可選)原型的命名列表,聲明每個組件所需的輸出類型。或者,可以提供一個空原型,它將應用於所有組件。如果您想檢查每個元素是否具有您在簡化時期望的類型,請使用此參數。

如果已指定 ptype,但無法進行 simplify = FALSE 或簡化,則將返回 list-of 列,並且每個元素的類型為 ptype

.transform

(可選)應用於每個組件的轉換函數的命名列表。或者,可以提供單個函數,該函數將應用於所有組件。如果您想在提取單個元素時對其進行轉換或解析,請使用此參數。

當同時提供 ptypetransform 時,transformptype 之前應用。

也可以看看

其他矩形:unnest_longer()unnest_wider()unnest()

例子

df <- tibble(
  character = c("Toothless", "Dory"),
  metadata = list(
    list(
      species = "dragon",
      color = "black",
      films = c(
        "How to Train Your Dragon",
        "How to Train Your Dragon 2",
        "How to Train Your Dragon: The Hidden World"
      )
    ),
    list(
      species = "blue tang",
      color = "blue",
      films = c("Finding Nemo", "Finding Dory")
    )
  )
)
df
#> # A tibble: 2 × 2
#>   character metadata        
#>   <chr>     <list>          
#> 1 Toothless <named list [3]>
#> 2 Dory      <named list [3]>

# Extract only specified components
df %>% hoist(metadata,
  "species",
  first_film = list("films", 1L),
  third_film = list("films", 3L)
)
#> # A tibble: 2 × 5
#>   character species   first_film               third_film     metadata    
#>   <chr>     <chr>     <chr>                    <chr>          <list>      
#> 1 Toothless dragon    How to Train Your Dragon How to Train … <named list>
#> 2 Dory      blue tang Finding Nemo             NA             <named list>
源代碼:R/hoist.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Hoist values out of list-columns。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。