【问题标题】:How to split a vector into n vectors and print them in one table in R? [duplicate]如何将一个向量拆分为 n 个向量并将它们打印在 R 的一个表中? [复制]
【发布时间】:2020-10-17 16:49:26
【问题描述】:

我想分割一个向量,例如:

x<-c(1,2,3,4,5,6,7,8,9,10)

let n=2
   m=c(4,6)
y<-split(x,rep(1:n,m))

我需要将 y 打印为如下表格:

y1 y2
1  5
2  6
3  7
4  8
  9
  10

如何用不同的行打印 y?非常感谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    您不能在 R 中拥有长度不等的数据帧/矩阵,您可以将 NA 附加到长度较短的向量中。

    sapply(y, `[`, seq_len(max(lengths(y))))
    
    #      1  2
    #[1,]  1  5
    #[2,]  2  6
    #[3,]  3  7
    #[4,]  4  8
    #[5,] NA  9
    #[6,] NA 10
    

    【讨论】:

      【解决方案2】:

      我们可以从stringi使用stri_list2matrix

      library(stringi)
      y1 <- stri_list2matrix(y)
      

      【讨论】:

        【解决方案3】:

        您可以考虑使用matrix 并使用矩阵索引在相关位置插入值,而不是首先拆分数据。速度非常快。

        M <- matrix(NA, ncol = 2, nrow = max(m))
        M[cbind(sequence(m), rep(seq_along(m), m))] <- x
        M
        #      [,1] [,2]
        # [1,]    1    5
        # [2,]    2    6
        # [3,]    3    7
        # [4,]    4    8
        # [5,]   NA    9
        # [6,]   NA   10
        

        【讨论】:

        • 非常感谢您的解决方案
        猜你喜欢
        • 2013-11-18
        • 2020-08-07
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 2019-08-13
        相关资源
        最近更新 更多