我有不定方程式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的所有行中使用这个过程。
答案 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