我想构建以下矩阵,以在R中对ILP进行建模。变量的实际含义并不真正相关,而相关的是以下属性。
我想用n
一个n x m
列数为1的矩阵构造一个矩阵。
对于第一行,我想要n
一个(从位置0开始)。
对于第二行,我想先n
有零,然后有n
一个,其余的列为零。
对于第三行,我想先设置n x 2
零,再设置n
一个,其余的列设置为零。
这一直持续到我n x (m-1)
在开始时为零,n
在结束时为零。
矩阵的一个小例子如下:
1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
生成此矩阵的代码是:
f.con <- matrix(0, nrow = 3, ncol = 12)
for(i in 1:3){
f.con[i,((i-1)*4+1):(4*i)] <- rep(1, 4)
}
我想知道是否可以使用更多的矢量化方法来构造此矩阵?
一个简单的基础R解决方案是使用 kronecker
nr <- 3
nc <- 12
f.con <- kronecker(diag(nr),t(rep(1,nc/nr)))
这样
> f.con
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] 1 1 1 1 0 0 0 0 0 0 0 0
[2,] 0 0 0 0 1 1 1 1 0 0 0 0
[3,] 0 0 0 0 0 0 0 0 1 1 1 1
``
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句