2017-01-27 2 views
2

Hoffentlich ist dies einfach, aber es scheint schwierig zu erklären!Mischmatrizen wechselnde Spalten: x Anzahl der Spalten von der ersten und y Nummer von der zweiten

Ich möchte zwei Matrizen in R kombinieren, aber ich möchte die ersten zwei Spalten aus der ersten Matrix als die ersten beiden Zeilen der kombinierten Matrix nehmen, dann die erste Spalte in der zweiten Matrix als dritte Spalte in der neuen Matrix wären dann die 4. und 5. Spalte der neuen Matrix die 3. und 4. von der ersten Matrix und so und so weiter. Alle Matrizen haben die gleichen Zeilennamen und gleiche Anzahl von Zeilen

Matrix 1:

1 2 1 2 1 2 
A a b c d e f 
B a b c d e f 
C a b c d e f 

Matrix 2:

3 3 3 
A x x x 
B y y y 
C z z z 

Wunsch Matrix:

1 2 3 1 2 3 1 2 3 
A a b x c d x e f x 
B a b y c d y e f y 
C a b z c d z e f z 

In meinem Beispiel I brauche diese (1,2) (3) (1,2) (3) Konfiguration, aber wie der Posttitel andeutet, wäre es cool, einen generischen Weg zu haben dies für jede Konfiguration von Spalten aus den Matrizen, die zusammengeführt werden sollen.

Antwort

4

Machen Sie eine Reihe von Spaltenindizes und dann eine cbind -ed Version des Paares von Matrizen Teilmenge:

grp1 <- 2 
grp2 <- 1 
sel <- c(rbind(
    matrix(1:ncol(mat1),ncol=ncol(mat1)/grp1), 
    matrix(1:ncol(mat2),ncol=ncol(mat2)/grp2) + ncol(mat1) 
)) 
# 'sel' looks like this before coercion to a vector. 
# You can see how the alternating numbers fit together here: 
#  [,1] [,2] [,3] 
#[1,] 1 3 5 
#[2,] 2 4 6 
#[3,] 7 8 9 
cbind(mat1,mat2)[,sel] 

    1 2 3 1 2 3 1 2 3 
A "a" "b" "x" "c" "d" "x" "e" "f" "x" 
B "a" "b" "y" "c" "d" "y" "e" "f" "y" 
C "a" "b" "z" "c" "d" "z" "e" "f" "z" 

Verwenden Sie die folgenden Objekte als mat1 und mat2:

mat1 <- as.matrix(read.table(text="1 2 1 2 1 2 
A a b c d e f 
B a b c d e f 
C a b c d e f", header=TRUE, check.names=FALSE, stringsAsFactors=FALSE)) 

mat2 <- as.matrix(read.table(text="3 3 3 
A x x x 
B y y y 
C z z z", header=TRUE, check.names=FALSE, stringsAsFactors=FALSE)) 
+0

Nizza Verwendung der Spalten-Hauptmerkmale von R-Matrizen mit 'rbind'. –

Verwandte Themen