如何生成以下矩阵?

时间:2016-11-20 08:15:04

标签: r

我有不定方程式x1 + x2 + x3 + x4 = 6的解矩阵(比如A)。另外,我有另一个矩阵(比如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倍和第4列3倍。我想在矩阵A的所有行中使用这个过程。

2 个答案:

答案 0 :(得分: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)]

如果a有很多行:

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

答案 1 :(得分: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