【问题标题】:how to convert columns in a data.frame from list to a vector?如何将 data.frame 中的列从列表转换为向量?
【发布时间】:2021-04-08 22:19:17
【问题描述】:
mydat <- structure(list(A = list(0.0513386405422815, 0.0498556819169294), 
                        B = list(0.101635583229926, 0.108375425286815), 
                        C = list(0.0505800651643873, 0.0491970061885759), 
                        D = list(0.100497645341106, 0.107056699263229)), row.names = 1:2, class = "data.frame")
> mydat$A
[[1]]
[1] 0.05133864

[[2]]
[1] 0.04985568

mydat 是一个data.frame,但它的列都是list 格式。有没有一种快速的方法可以将它们转换为向量?

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:

    你可以试试

    > out <- list2DF(Map(unlist, mydat))
    > str(out)
    'data.frame':   2 obs. of  4 variables:
     $ A: num  0.0513 0.0499
     $ B: num  0.102 0.108
     $ C: num  0.0506 0.0492
     $ D: num  0.1 0.107
    

    【讨论】:

      【解决方案2】:

      您可以unnest 数据框中的所有列。

      library(tidyr)
      mydat %>% unnest(cols = everything())
      
      #     A     B      C     D
      #   <dbl> <dbl>  <dbl> <dbl>
      #1 0.0513 0.102 0.0506 0.100
      #2 0.0499 0.108 0.0492 0.107
      

      【讨论】:

        【解决方案3】:

        只是'unlist()'他们。

        lapply(mydat, unlist)
        $A
        [1] 0.05133864 0.04985568
        
        $B
        [1] 0.1016356 0.1083754
        
        $C
        [1] 0.05058007 0.04919701
        
        $D
        [1] 0.1004976 0.1070567
        

        【讨论】:

          【解决方案4】:

          apply()-ing unlist、apply()-ing simple2array 相同:

          # Simplify each list to a vector: 
          data.frame(apply(mydat, 2, simplify2array))
          

          【讨论】:

            猜你喜欢
            • 2020-06-21
            • 2011-10-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-07
            • 1970-01-01
            相关资源
            最近更新 更多