首页 > 解决方案 > 我没有正确初始化我的列表吗?试图追加到一个空列表只返回最后一个值 - R

问题描述

这里maxFlowFordFulkerson()返回一个最大流量的值,这是28我使用arcs矩阵作为参数的时候。然而,我需要做的是将capacityarcs 中的列乘以常数k,以查看最大流量如何受到容量增加的影响,并将这些值存储在 matrix 中sensitivity。我已经设置tempArcs为矩阵的临时版本,arcs其容量乘以k[i].

我的问题是,唯一保存到流中的值是最后一次迭代的值。我以为我已经正确初始化了我的列表,那么为什么这没有给我不同的值呢?

library(optrees)

nodes = c(1:8)

from = c(1,1,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7)
to = c(2,3,4,5,4,6,7,3,5,7,2,6,8,5,7,8,6,8)
capacity = c(20,15,10,15,13,15,10,13,10,12,15,7,10,7,8,8,8,10)
arcs = cbind(from, to, capacity)

k = c(1:10)
flows = c()
for (i in seq_along(k))
  tempArcs = cbind(arcs[,-3], arcs[,3]*k[i])
  max = maxFlowFordFulkerson(nodes, tempArcs)
  flows = append(flows, max$max.flow)

sensitivity = cbind(k, flows)
sensitivity

       k flows
 [1,]  1   280
 [2,]  2   280
 [3,]  3   280
 [4,]  4   280
 [5,]  5   280
 [6,]  6   280
 [7,]  7   280
 [8,]  8   280
 [9,]  9   280
[10,] 10   280

标签: rloopsfor-loopappend

解决方案


推荐阅读