2016-11-20 6 views
0

Ich habe Lösungsmatrix (zum Beispiel A) zu der unbestimmten Gleichung x1 + x2 + x3 + x4 = 6. Auch habe ich eine andere Matrix (B sagen) mit SäulenWie erzeuge ich folgende Matrix?

0 1 0 1 
0 0 1 1 

I Matrizen erzeugen wollen mit Zeilen von A und die Spalten von B.

Für ein Beispiel, (2,0,1,3) ist die einzige Lösung (eine Zeile) der Matrix A. Dann sind die Spalten meiner neuen Matrix

0 0 0 1 1 1 
0 0 1 1 1 1 

Spalten dieser neuen Matrix sind die Vielfachen der Spalten von B. dh, erste Spalte 2-mal , dritte Spalte 1-mal und vierte Spalte 3-mal. Ich möchte dieses Verfahren verwenden, um alle Zeilen der Matrix A.

Antwort

0

Verwendung rep:

b <- matrix(c(0, 0, 1, 0, 0, 1, 1, 1), nrow = 2) 
a <- c(2, 0, 1, 3) 

b[, rep(1:ncol(b), a)] 

wenn ein viele Zeilen:

lapply(1:nrow(a), function(i) b[, rep(1:ncol(b), a[i, ])]) 
+0

Das funktioniert, aber wie kann ich anwenden das zu allen Reihen von A? – rxk011

+0

können Sie 'lapply' verwenden. – mt1022

0
> B <- rbind(c(0, 1, 0, 1), c(0, 0, 1, 1)) 
> A <- rbind(c(2,0,1,3), c(2,0,1,3)) 

> do.call(rbind, lapply(1:nrow(A), function(jj) t(sapply(1:nrow(B), function(j) do.call(c, lapply(1:4, function(i) rep(B[j,i], A[jj,i]))))))) 
    [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 0 0 0 1 1 1 
[2,] 0 0 1 1 1 1 
[3,] 0 0 0 1 1 1 
[4,] 0 0 1 1 1 1 
Verwandte Themen