【问题标题】:R - Nest column values into a a single column (type list) of vectorsR - 将列值嵌套到向量的单个列(类型列表)中
【发布时间】:2020-11-06 19:46:47
【问题描述】:

我尝试在我的数据框中创建所有列的序列,如下所示:

df <- data.frame(label = c("ger", "at", "uk", "us"),
           a = c(1,2,3,4),
           b = c(2,3,5,1),
           c = c(5,6,2,1))

这很接近,但没有提供预期的结果:

df %>% 嵌套(数据 = c(a,b,c))

  label data            
  <chr> <list>          
1 ger   <tibble [1 x 3]>
2 at    <tibble [1 x 3]>
3 uk    <tibble [1 x 3]>
4 us    <tibble [1 x 3]>

我想要一个矢量而不是小标题。它应该是这样的:

  label data            
  <chr> <list>          
1 ger   <dbl [3]>
2 at    <dbl [3]>
3 uk    <dbl [3]>
4 us    <dbl [3]>

有谁知道要存档这个吗?

【问题讨论】:

    标签: r dplyr tidyverse purrr


    【解决方案1】:

    我们可以将c_across 与来自dplyrrowwise 一起使用

    library(dplyr)
    df %>%
        rowwise %>%
        transmute(label, data = list(c_across(a:c))) %>%
        ungroup
    

    -输出

    # A tibble: 4 x 2
    #  label data     
    #  <chr> <list>   
    #1 ger   <dbl [3]>
    #2 at    <dbl [3]>
    #3 uk    <dbl [3]>
    #4 us    <dbl [3]>
    

    【讨论】:

      【解决方案2】:

      dplyrpurrr 选项可以是:

      df %>%
       transmute(label,
                 data = pmap(across(-label), ~ c(...)))
      
        label    data
      1   ger 1, 2, 5
      2    at 2, 3, 6
      3    uk 3, 5, 2
      4    us 4, 1, 1
      

      如果需要一个未命名的向量:

      df %>%
       transmute(label,
                 data = pmap(across(-label), ~ unname(c(...))))
      

      【讨论】:

      • 也很接近,但仍然包含列表的名称。我想unname 会的。我怎样才能在这里传递这个论点?
      • 它是一个命名向量,是的。你特别需要一个未命名的向量吗?
      • 最好,是的:-)
      • 更新了帖子。
      • 对不起,你的也不错,但 akruns 正是我正在寻找的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 2020-11-26
      • 2021-02-12
      • 1970-01-01
      相关资源
      最近更新 更多