R объединить кадры данных в определенном порядке - PullRequest
0 голосов
/ 11 января 2011

У меня есть три кадра данных одинакового размера, которые я хочу объединить в определенном порядке, чтобы затем я мог использовать write.table для создания отформатированного текстового файла для использования в другой программе.

Я хочу это:

dataframeA_col1 dataframeB_col1 dataframeC_col1 dataframeA_col2 dataframeB_col2 dataframeC_col2 и т. Д ...

Не это: 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 Ответ

3 голосов
/ 11 января 2011

Конечно, вот способ без петель:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...