簡體   English   中英

R 取消嵌套多列

[英]R unnest multiple columns

任何功能性方法可以取消嵌套不同大小的多個列?

例子:

library(tidyr)
library(dplyr)

my_list <- list(year = 2018:2020, period = 1, id = c(17,35))

expand_grid(my_list) %>%
  pivot_wider(
    names_from = my_list,
    values_from = my_list
  ) %>%
  rename_at(., names(.), ~ names(my_list))
# A tibble: 1 x 3
  year         period       id          
  <named list> <named list> <named list>
1 <int [3]>    <dbl [1]>    <dbl [2]>   
expand_grid(my_list) %>%
  pivot_wider(
    names_from = my_list,
    values_from = my_list
  ) %>%
  rename_at(., names(.), ~ names(my_list)) %>%
  unnest(cols = names(my_list))
Erro: Incompatible lengths: 3, 2.

unnest 需要列名,是否可以使用字符串向量?

預期的:

# A tibble: 1 x 3
  year  period   id          
  <int> <int>  <int>
1 2018   1    17
2 2019   1    17
3 2020   1    17
4 2018   1    35
5 2019   1    35
6 2020   1    35

我們可以使用cross_df中的purrr

purrr::cross_df(my_list)

#   year period    id
#  <int>  <dbl> <dbl>
#1  2018      1    17
#2  2019      1    17
#3  2020      1    17
#4  2018      1    35
#5  2019      1    35
#6  2020      1    35

或者在基礎 R 中使用expand.griddo.call

do.call(expand.grid, my_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM