【发布时间】:2014-03-31 18:45:14
【问题描述】:
我正在尝试为编程问题创建索引向量。这个想法是能够索引一个矩阵的元素,这样我就可以用另一个矩阵替换这些元素。
nstks<- 2
stk<-1:nstks
nareas<-3
area<-1:nareas
eff<-c(10,10,10)
x<-matrix(1:6,nrow=nstks,ncol=nareas)
h<-matrix(0,nrow=length(eff)+nstks,ncol=nareas)
for(i in 1:nareas) h[i,i]<-1
这将返回一个 5 x 3 矩阵,其中前 3 行的对角线上为 1。现在我想用另一个函数返回的 2 x 3 矩阵替换第 4 行和第 5 行。我想的一种方法是通过以下方式索引 h 矩阵:
hlen<-c(nareas + stk,(nareas+ stk +(nareas +nstks)),(nareas+stk +(nareas+nstks)+(nareas+nstks)))
h[hlen] <- x
这会将 h 的第 4、5、9、10、14、15 个元素按顺序替换为 x 的元素。
但是,对于不同数量的 nstks 和 nareas,我需要使其灵活。例如,对于 nareas=4 和 nstks=3,我需要吐出一个向量:c(5,6,7,12,13,14,19,20,21,26,27,28)
澄清一下:我需要为约束优化问题创建雅可比矩阵。雅可比的维度取决于约束的数量和变量的数量。我想编写一个函数,该函数将为任何指定维数提供雅可比矩阵。
变量是eff,它的长度和nareas一样。对 eff 有非负约束,这反映在第一个 nareas*nareas 子矩阵是对角单位矩阵中。矩阵的最后一行反映了对可以捕获的鱼数量的限制,按库存。因此,对于一只股票,只会增加 1 行、2 只股票、2 行等。
我需要用另一个矩阵给出的元素替换最后几行中的元素。在示例中,x 仅用于说明。实际的 x 由函数给出,但具有相同的维度。这是否澄清了一些事情?
有什么想法吗?
谢谢! 我相信我可以使用:
h[(length(eff)+1): (length(eff)+nstks),1:nareas]<-x
像往常一样,我把它弄得太复杂了。感谢您的帮助。
【问题讨论】:
-
你的问题太模糊了。请说明。
标签: r