我有要分析的数据,以列表的形式呈现(只有一行和多个列)。
A B C D E F G H I
1 2 3 4 5 6 7 8 9
有没有办法告诉R将每个x项目分成这个列表并获得如下所示的内容(C D E F G H列几乎与A B相同)?
A B
1 2
3 4
5 6
7 8
9
答案 0 :(得分:2)
如果列数是' x'的倍数,那么我们unlist
数据集,并使用matrix
创建预期的输出。
as.data.frame(matrix(unlist(df1), ncol=2, dimnames=list(NULL, c("A", "B")) , byrow=TRUE))
如果列数不是' x'的倍数,则
x <- 2
gr <- as.numeric(gl(ncol(df1), x, ncol(df1)))
lst <- split(unlist(df1), gr)
do.call(rbind, lapply(lst, `length<-`, max(lengths(lst))))
# A B
# 1 1 2
# 2 3 4
# 3 5 6
# 4 7 8
# 5 9 NA