【问题标题】:R and Simmer insert data into variableR 和 Simmer 将数据插入变量
【发布时间】:2018-05-24 09:44:37
【问题描述】:

我正在尝试将get_mon_resources 存储到数据变量中。

library(simmer) 

SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
set.seed(1234)

elevators <-lapply(1:100, function(i) {
  elevator <- simmer("elevator")

  worker <-
    trajectory("elevator service") %>% #trajectory name
    log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator") 

  elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)
    mydata <- get_mon_resources(elevator)
})

但是mydata &lt;- get_mon_resources(elevator) 命令行不起作用

【问题讨论】:

  • 你运行代码了吗?它在 R 上运行良好吗?
  • 是的,运行正常吗
  • 这是什么意思:-" 但是 mydata
  • 我没有收到错误,问题是来自 get_mon_resources(elevator) 的数据没有插入到“mydata”变量中
  • 我想将每次复制的数据导出到“mydata”变量中

标签: r


【解决方案1】:

您没有将 mydata 变量声明为全局变量,因为您无法在外部访问该变量。将 mydata &lt;- get_mon_resources(elevator) 替换为以下代码

mydata <<- get_mon_resources(elevator)

【讨论】:

  • 如何从属性中插入数据,如下所示:"times
  • 你想在哪里插入?
  • 在" set_attribute("start_time", function() {now(elevator)}) %>%"之后
  • 您能否为“get_attribute(elevator, "start_time") 粘贴一些示例输出。”
  • 请看我的新帖子包括代码。查看名为“Start_times”的变量
【解决方案2】:
library(simmer) 

SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
Start_times <<-data.frame(row.names=TRUE)

set.seed(1234)

elevators <-lapply(1:10, function(i) {
  elevator <- simmer("elevator")

  worker <-
    trajectory("elevator service") %>% #trajectory name
    log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    Start_times<<-rbind(get_attribute(elevator, "start_time"),Start_times)%>%
    log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator") 

  elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)




})

【讨论】:

  • 你的输出会是这样的{轨迹:匿名,3个活动{活动:SetAttribute |键:[权重],值:[80],全局:0,mod:N } { Activity:SetAttribute |键:[权重],值:函数(),全局:0,模块:N } { 活动:日志 |消息}}
【解决方案3】:

get_mon_*() 方法也适用于模拟列表:

library(simmer)

SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
set.seed(1234)

elevators <-lapply(1:100, function(i) {
  elevator <- simmer("elevator")

  worker <-
    trajectory("elevator service") %>% #trajectory name
    #log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    #log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator") 

  elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)
})

mydata <- get_mon_resources(elevators)
head(mydata)
#>   resource     time server queue capacity queue_size system limit replication
#> 1 elevator 1.250879      1     0        2        Inf      1   Inf           1
#> 2 elevator 1.254170      2     0        2        Inf      2   Inf           1
#> 3 elevator 1.420254      2     1        2        Inf      3   Inf           1
#> 4 elevator 1.434505      2     2        2        Inf      4   Inf           1
#> 5 elevator 1.628096      2     3        2        Inf      5   Inf           1
#> 6 elevator 1.673071      2     4        2        Inf      6   Inf           1

【讨论】:

  • 谢谢,但是在这种方法中,复制字段的值为 1,我怎样才能为每个复制增加复制值?
  • get_mon_resources(elevators) 命令对我来说很好,我有一个问题:“复制”字段每次都是 1,有什么方法可以将这个值增加为 lapply(1:100, function (i)) ?
  • 不是。运行示例并检查整个数据集。
【解决方案4】:

如何将这个值增加lapply(1:10, function(i)

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 2012-07-09
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多