2016-11-20 69 views
0

我有溶液矩陣(比如說A)與不定方程X1 + X2 + X3 + X4 = 6。另外,我有另一矩陣(說B)與列是如何生成以下矩陣?

0 1 0 1 
0 0 1 1 

我想用生成矩陣A行和B列。

例如,令(2,0,1,3)是矩陣A的一個解(一行)。然後,我的新矩陣的列是

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

這個新矩陣的列是B的列的倍數,即第一列2倍,第三欄1次和第四欄3次。我想利用這個程序矩陣A的所有行

回答

0

使用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)] 

如果有許多行:

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

這樣的作品,但我該如何申請這到A的所有行? – rxk011

+0

你可以使用'lapply'。 – 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