【问题标题】:How to transform a vector into data frame with fixed dimension如何将向量转换为具有固定维度的数据框
【发布时间】:2015-08-24 02:05:12
【问题描述】:

我有长度为四倍的 list 向量:

mylist <- c("1", "darkorange", "16876", "16890", "2", "pink", "6833", "7189", 
"2", "pink", "9181", "9279", "2", "darkgreen", "1846", "2170"
)

我想做的就是把这个列表变成一个数据框 尺寸(M * 4):

V1    V2           V3     V4
"1" "darkorange" "16876" "16890" 
"2" "pink"       "6833"  "7189" 
"2" "pink"       "9181"  "9279" 
"2" "darkgreen"  "1846"  "2170"

我怎样才能做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:

    只需转换为matrix,指定ncol

    m1 <- matrix(mylist, ncol=4, byrow=TRUE)
    d1 <- as.data.frame(m1, stringsAsFactors=FALSE)
    d1
    #  V1         V2    V3    V4
    #1  1 darkorange 16876 16890
    #2  2       pink  6833  7189
    #3  2       pink  9181  9279
    #4  2  darkgreen  1846  2170
    

    “data.frame”列都是character 类,因为输入vectorcharacter。我们可以使用type.convert基于数字/非数字值转换class

    d1[] <- lapply(d1, type.convert)
    str(d1) 
    #'data.frame':  4 obs. of  4 variables:
    #$ V1: int  1 2 2 2
    #$ V2: Factor w/ 3 levels "darkgreen","darkorange",..: 2 3 3 1
    #$ V3: int  16876 6833 9181 1846
    #$ V4: int  16890 7189 9279 2170
    

    【讨论】:

      【解决方案2】:

      您也可以在粘贴的向量上尝试read.table,并指定您期望的列数。但是,这可能不会像matrix + data.frame + lapply 那样高效:

      read.table(text = paste(mylist, collapse = " "), 
                 col.names = paste0("V", 1:4))
      #   V1         V2    V3    V4
      # 1  1 darkorange 16876 16890
      # 2  2       pink  6833  7189
      # 3  2       pink  9181  9279
      # 4  2  darkgreen  1846  2170
      str(.Last.value)
      # 'data.frame': 4 obs. of  4 variables:
      #  $ V1: int  1 2 2 2
      #  $ V2: Factor w/ 3 levels "darkgreen","darkorange",..: 2 3 3 1
      #  $ V3: int  16876 6833 9181 1846
      #  $ V4: int  16890 7189 9279 2170
      

      【讨论】:

        猜你喜欢
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 2017-10-31
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        相关资源
        最近更新 更多