R按特定顺序合并数据帧

时间:2011-01-11 01:10:32

标签: r dataframe

我有三个相同大小的数据框,我想按特定的顺序合并,以便我可以使用write.table制作一个格式化的文本文件,以便在另一个程序中使用。

我想要这个:

dataframeA_col1 dataframeB_col1 dataframeC_col1 dataframeA_col2 dataframeB_col2 dataframeC_col2 etc ......

不是这样的: dataframeA_col1 dataframeA_col2 dataframeB_col1 dataframeB_col2

我开始编写下面的循环,但只能给我前3列。我该如何解决这个循环,还是有更好的方法?

temp <- c()
for(i in length(dataframeA)){
temp <- cbind(temp, dataframeA[,i], dataframeB[,i], dataframeC[,i])
i <- i+1
}

1 个答案:

答案 0 :(得分:3)

当然,这是一种无循环方式:

dfA <- data.frame(col1 = 1:4, col2 = 1:4, col3 = 1:4)
dfB <- dfA
dfC <- dfA
colSeq <- c ( matrix(1 : (3*ncol(dfA)), 3, ncol(dfA), byrow = TRUE) )

其中colSeq是您想要的列序列:

> colSeq
[1] 1 4 7 2 5 8 3 6 9 

现在使用此colSeq重新排列cbind(dfA,dfB,dfC)

的列
> cbind(A = dfA, B = dfB, C = dfC)[, colSeq ]
  A.col1 B.col1 C.col1 A.col2 B.col2 C.col2 A.col3 B.col3 C.col3
1      1      1      1      1      1      1      1      1      1
2      2      2      2      2      2      2      2      2      2
3      3      3      3      3      3      3      3      3      3
4      4      4      4      4      4      4      4      4      4