当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。