【问题标题】:R data.frame columns into single listR data.frame 列到单个列表中
【发布时间】:2020-04-28 02:09:09
【问题描述】:

我似乎无法找到答案,尽管我确定它已经被问过了......但我想提取 data.frame 列的一个子集并将其组合到一个列表中,而不使用任何包。例如:

DF <- data.frame(a = c(1,2,3), b = c(4,5,6), c = c(7,8,9))
test <- c(DF[,1], DF[,2], DF[,3]) # Gives what I want
test <- c(DF[,1:3]) # Doesn't give what I want

因此,所需的输出将是一个值 1:9 的列表。 我希望动态分配子集,因此即使它提供了我想要的输出,我也不能按照我输入的方式进行操作。我能想到的唯一另一种方法是有一个循环并一次递增地添加一列,例如测试

【问题讨论】:

    标签: r


    【解决方案1】:

    也许你可以在do.call 中尝试c

    test <- do.call(c,DF)
    

    这样

    > test
    a1 a2 a3 b1 b2 b3 c1 c2 c3 
     1  2  3  4  5  6  7  8  9 
    

    【讨论】:

      【解决方案2】:

      你可以unlist:

      unlist(DF)
      
      # a1 a2 a3 b1 b2 b3 c1 c2 c3 
      # 1  2  3  4  5  6  7  8  9 
      

      如果需要,可以去掉名字:

      unlist(DF, use.names = FALSE) # or also unname(unlist(DF))
      
      # [1] 1 2 3 4 5 6 7 8 9
      

      【讨论】:

        【解决方案3】:

        flatten 的选项来自purrr

        library(dplyr)
        library(purrr)
        DF %>%
           flatten_dbl
        #[1] 1 2 3 4 5 6 7 8 9
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-15
          • 1970-01-01
          • 2016-05-15
          • 1970-01-01
          • 1970-01-01
          • 2019-12-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多