【发布时间】:2018-04-24 07:51:12
【问题描述】:
我有 pos 作为具有 24 行和 2 列的数组索引矩阵。在第一列中,它包含值 1、2、3、4。
$position
row col
[1,] 4 6
[2,] 1 6
[3,] 4 5
[4,] 2 6
[5,] 1 5
[6,] 3 6
[7,] 4 4
[8,] 2 5
[9,] 1 4
[10,] 3 5
[11,] 2 4
[12,] 4 3
[13,] 1 3
[14,] 3 4
[15,] 2 3
[16,] 4 2
[17,] 3 3
[18,] 1 2
[19,] 2 2
[20,] 3 2
[21,] 4 1
[22,] 1 1
[23,] 2 1
[24,] 3 1
我试过代码
ch<-c(5,7,10,5)
C<-150
s<-c(1,1,1,1); s
cost<-sum(ch*s)
repeat
{
for(i in 1:24)
{
for (j in 1:4)
{
if (pos[i,1]==j) s[j]<-s[j]+1 else s
}
if (cost<C)
{
break
}
}
}
s
这里 s 返回 s=c(1,1,1,4280236) 但结果应该是 s=c(5,6,6,5)
【问题讨论】:
-
你期望什么输出?
-
As [24,] 显示第 3 行索引 s 应为 s=c(1,1,"2",1) pos[23,] 显示第 2 行索引 s 应变为 s=c (1,"2",2,1) pos [22,] 现在显示第一行索引 s 应该是 s=c("2",2,2,1) 同样对于 pos[21,] s=c(2 ,2,2,"2") 对于 pos[20,] s=c(2,2,"3",2) 对于 pos[19,] s=c(2,"3",3,2) 和很快。反逗号仅表示根据 pos.@RalfStubner 中的行索引更改的元素
-
不清楚。请说明您需要做什么
-
我要选取数组中尚未选取的最大值;将其与其行关联; (此结果存储在此处的“pos”矩阵中)如果包含这 1 个新单位的新成本是 chs,则将该行样本大小 (ss>C)停止而不将关联行的样本大小增加 1。 @Sotos
-
我根据您的 cmets 更改了代码并获得了所需的结果 ' for(i in 24:1) { for(j in 1:4) { if (pos[i,1]= =j) s[j]=C) break } s; cost ' 导致 s=c(5,6,6,5), cost=152。感谢@jogo的回复