Конечно, вот способ без петель:
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