【问题标题】:In R / writing loop function with external function inside在 R / 编写内部带有外部函数的循环函数
【发布时间】:2021-07-12 13:16:18
【问题描述】:

我想用 queuecomputer https://cran.rstudio.com/web/packages/queuecomputer/queuecomputer.pdf 生成 100 个排队模型(因为到达和服务时间是随机的,我总是会得到不同的结果)并将每个列表的特定值存储在单独的向量中。 (队列计算机总是返回一个列表) 比如让

 n_customers <- 50
 arrival_rate <- 1.8
 service_rate <- 1
 arrivals <- cumsum(rexp(n_customers, arrival_rate))
 service <- rexp(n_customers, service_rate)
 queue_obj <- queue_step(arrivals, service, servers = 2)

然后我想访问所有 100 个样本的 summary(queue_obj)$mwt 并将该值放入一个新向量中。

到目前为止我已经尝试过但它不起作用:

 queuetmp <- function(n) {
  for (i in 1:n) {
 queue[[i]] <- queue_step(cumsum(rexp(50, 1/10)), rexp(50, 1/8), servers = 2)
 mwt[i] <- (summary(queue))[[i]]$mwt
 }
 return (mwt)
}

(因为 queuecomputer 是一个非常新的包,很多人不会熟悉它,但输出只是一个典型的列表)

【问题讨论】:

    标签: r list for-loop


    【解决方案1】:

    我认为您需要将索引i 移动到内部,并首先将queuemwt 定义为空列表,即:

    library(queuecomputer)
    n_customers <- 50
    arrival_rate <- 1.8
    service_rate <- 1
    arrivals <- cumsum(rexp(n_customers, arrival_rate))
    service <- rexp(n_customers, service_rate)
    queue_obj <- queue_step(arrivals, service, servers = 2)
    queue <- list()
    mwt <- list()
    
    queuetmp <- function(n) {
      for (i in 1:n) {
        queue[[i]] <- queue_step(cumsum(rexp(50, 1/10)), rexp(50, 1/8), servers = 2)
        mwt[i] <- (summary(queue[[i]]))$mwt
      }
      return (mwt)
    }
    
    queuetmp(10)
    

    我似乎得到了一个不平凡的答案,如果这符合您的预期?

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多