【问题标题】:Unnesting a combination variable (combn) as a vector将组合变量 (combn) 取消嵌套为向量
【发布时间】:2021-01-01 21:23:28
【问题描述】:

使用以下代码,我设法得到了一个很好的combination

tibble(
    x = list(c(1, 2, 3), c(4,5,6))
  ) %>% 
  mutate(
      combination = 
        x %>% 
        map(
            .f = combn
          , 2
          ) %>% 
        map(.f = t)
    ) %>% 
  unnest(combination)

# A tibble: 6 x 2
  x         combination[,1]  [,2]
  <list>              <dbl> <dbl>
1 <dbl [3]>               1     2
2 <dbl [3]>               1     3
3 <dbl [3]>               2     3
4 <dbl [3]>               4     5
5 <dbl [3]>               4     6
6 <dbl [3]>               5     6

但是,当使用 View() 函数观察时,我得到:

如何才能将combination 显示为矢量?即:

【问题讨论】:

    标签: r tidyr unnest combn


    【解决方案1】:

    我们可以在combn 中指定simplify = FALSE 以返回list,而不是强制转换为matrix

    library(purrr)
    library(dplyr)
    library(tidyr)
    tbl1 <- tibble(
       x = list(c(1, 2, 3), c(4,5,6))
      ) %>% 
     mutate(
      combination = 
        x %>% 
        map(
            .f = combn
          , 2, simplify = FALSE
          )) 
    

    现在,做unnest

    out <- tbl1 %>%
       unnest(combination)
    
    out
    # A tibble: 6 x 2
    #  x         combination
    #  <list>    <list>     
    #1 <dbl [3]> <dbl [2]>  
    #2 <dbl [3]> <dbl [2]>  
    #3 <dbl [3]> <dbl [2]>  
    #4 <dbl [3]> <dbl [2]>  
    #5 <dbl [3]> <dbl [2]>  
    #6 <dbl [3]> <dbl [2]>  
    

    查看View

    【讨论】:

      【解决方案2】:

      这里有一个data.table 选项可能会有所帮助

      library(data.table)
      library(tidyr)
      unnest(setDT(df)[, combination := lapply(x, function(v) combn(v, 2, simplify = FALSE))], combination)
      

      【讨论】:

        猜你喜欢
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        • 2019-05-17
        • 2021-09-23
        相关资源
        最近更新 更多