【发布时间】: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
我想分割一个向量,例如:
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
您不能在 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
【讨论】:
我们可以从stringi使用stri_list2matrix
library(stringi)
y1 <- stri_list2matrix(y)
【讨论】:
您可以考虑使用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
【讨论】: