【问题标题】:Using purrr way to convert listed columns to string in R使用 purrr 方式将列出的列转换为 R 中的字符串
【发布时间】:2021-03-27 06:13:30
【问题描述】:

我尝试将列出向量的列转换为字符串。我不想使用pivot_wider 使数据框变宽,而是取消列出向量并将它们保存在同一个单元格中。因此数据框具有相同的列数。我找到了使用 sapply 转换一列的解决方案。

df$a <- sapply(df$a, paste, collapse=",")

我想知道是否有办法以purrr 的方式执行此操作,并对多个列出的列执行此操作。我已经提供了我的输出。

structure(list(rowid = c(3995L, 7899L), a = list(c("", "3007766601", 
"1710034", "1036761", "3006260740", "9681413", "3004080548", 
"1018470", "3010966701"), c("3013099020", "", "3005254598", "3007556128", 
"3003600763", "3011347852")), e = list(c("K172483", 
"K992729", "K043249", "K072487", "K033575", "K011925", "K180588", 
"K982399", "K150662", "K110703"), c("K913525", "K880518", "K960198", 
"K141672", "K926056", "K935580", "K953910", "K982706", "K911739", 
"K010762", "K965013", "K120388", "K760429", "K940294", "K980322", 
"K981131", "K896387", "K170946", "K003266", "K992506", "K003837", 
"K121303", "K123603", "K190024"))), row.names = c(3995L, 7899L
), class = "data.frame")

【问题讨论】:

    标签: r function loops purrr sapply


    【解决方案1】:

    使用来自purrrmap

    library(purrr)
    library(stringr)
    map_dfr(df, ~ map_chr(.x, str_c, collapse=", "))
    

    -输出

    # A tibble: 2 x 3
    #  rowid a                                                    e                                                                                        
    #  <chr> <chr>                                                <chr>                                                                                    
    #1 3995  , 3007766601, 1710034, 1036761, 3006260740, 9681413… K172483, K992729, K043249, K072487, K033575, K011925, K180588, K982399, K150662, K110703 
    #2 7899  3013099020, , 3005254598, 3007556128, 3003600763, 3… K913525, K880518, K960198, K141672, K926056, K935580, K953910, K982706, K911739, K010762… 
    

    【讨论】:

      【解决方案2】:

      你可以使用两个sapply:

      sapply(df, function(x) sapply(x, paste, collapse=","))
      #     rowid  a                                                                              e                                                                                                                                                                                                
      #[1,] "3995" ",3007766601,1710034,1036761,3006260740,9681413,3004080548,1018470,3010966701" "K172483,K992729,K043249,K072487,K033575,K011925,K180588,K982399,K150662,K110703"                                                                                                                
      #[2,] "7899" "3013099020,,3005254598,3007556128,3003600763,3011347852"                      "K913525,K880518,K960198,K141672,K926056,K935580,K953910,K982706,K911739,K010762,K965013,K120388,K760429,K940294,K980322,K981131,K896387,K170946,K003266,K992506,K003837,K121303,K123603,K190024"
      
      

      【讨论】:

      • 非常感谢!!您的解决方案效果很好,只是我在寻找purrr 方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 2022-10-24
      • 2020-01-20
      • 1970-01-01
      • 2019-07-04
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多