R

时间:2018-05-23 10:17:44

标签: for-loop matrix subscript

我试图通过复制他们在课堂上给我们的算法进行定量系统性能分析来练习R.输出是系统中一定数量的项目(n)和一定数量的机器(k)的队列长度(Q),吞吐量(X)和服务时间(R)。 当机器数量= 1且代码正常工作时,我开始使用简化版本。

N1 <-c(1,2,3)
K1 <- 1
Q <- 0 
R <- 0
D <- 3 # service rate of the machine
for(z in 1:length(N1))
{if(z==1){R[z] <-D} else{R[z] <- 3*(1+Q[z-1])}
X<- z/R[z];
Q[z] <- X*R[z]}

然后,我尝试了4台机器。 D代表每台机器的服务率。所以我创建了一个嵌套的for循环。代码如下。

N1 <-c(1,2)
K <- c(1,2,3,4)
D <- c(3,4,3,6) 
Q <- 0 
R <- 0
X <-0 
for(z in 1:length(N1)) 
  {for(k in 1:length(K))
  {if(z==1){R[k,z] <-D[k]} else{R[k,z] <- D[k]*(1+Q[k,z-1])}
  X[z]<- z/sum(R[z]); 
  if(z==1){Q[k,z] <- X[z]*R[k,z]} else {Q[k,z] <- X[z]*R[k,z]}
 }}

虽然我修正了z == 1,但是我得到一个错误:&#34; R [k,z]中的错误&lt; -D [k]:矩阵&#34;上的下标数量不正确 我不知道如何继续,我将不胜感激任何帮助。如果需要更多细节,请告诉我。非常感谢。

1 个答案:

答案 0 :(得分:0)

您必须分配二维矩阵R

使用:

R <- matrix(nrow=length(K), ncol=length(N1))

而不是:

R <- 0