Shiny 闪亮:McLappy遇到错误,而Lappy没有

Shiny 闪亮:McLappy遇到错误,而Lappy没有,shiny,parallel-processing,reactive,mclapply,Shiny,Parallel Processing,Reactive,Mclapply,我有一个反应在闪亮,功能完全好,与lappy(两个街区下来,在第33行),但打破了作为一个mclappy。McLappy(1:400,函数(sim_n){:所有计划的内核在用户代码中遇到错误 我尝试了force()的mclappy,force(缩写,initial,input)的一些参数。不确定这是不是正确的想法,甚至是问题。它不起作用 我无法调试这个问题,因为Lappy版本没有问题。谢谢你的帮助 SIM_DF = eventReactive(input$Simulate,{

我有一个反应在闪亮,功能完全好,与lappy(两个街区下来,在第33行),但打破了作为一个mclappy。McLappy(1:400,函数(sim_n){:所有计划的内核在用户代码中遇到错误

我尝试了force()的mclappy,force(缩写,initial,input)的一些参数。不确定这是不是正确的想法,甚至是问题。它不起作用

我无法调试这个问题,因为Lappy版本没有问题。谢谢你的帮助

    SIM_DF = eventReactive(input$Simulate,{
        STATUS_TRT_DUR_PLOT("<i>Up to date</i>")
        
        active_data = NULL

        
        if (input$Analysis == 0){
          seq_loop <<- seq(1,1,1)
        } else if (input$Analysis == 1){
          seq_loop <<- seq(input$positive_rate[1],input$positive_rate[2],input$s1_step)
        } else if (input$Analysis == 2){
          seq_loop <<- seq(input$initial_infected[1],input$initial_infected[2],input$s2_step)
        } else if (input$Analysis == 3){
          seq_loop <<- seq(input$vaccine_range[1],input$vaccine_range[2],input$s3_step)
        } else if (input$Analysis == 4){
          seq_loop <<- seq(input$camp_size_range[1],input$camp_size_range[2],input$s4_step)
        } else if (input$Analysis == 5){
          seq_loop <<- seq(input$cabin_size_range[1],input$cabin_size_range[2],input$s5_step)
        }
        

        for (initial in seq_loop){  
          if (input$Analysis == 1){
            initials = rbinom(input$camp_size, 1, prob = (initial/100))
          } else if (input$Analysis == 2){
            initials = c(rep(1, times = initial), rep(0,times = (input$camp_size - initial)))
          } else if (input$Analysis == 4){
            initials = rbinom(initial, 1, prob = (input$positive_rate/100))
          } else {
            initials = rbinom(input$camp_size, 1, prob = (input$positive_rate/100))
          } 
          
########## HERE IS THE MCLAPPLY #####
sims <- mclapply(1:400,  function(sim_n){
            
            if (input$Analysis == 0){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = input$camp_size),
                                            initial = initial,
                                            id =  1:input$camp_size,
                                            status = rbinom(input$camp_size, 1, prob = (input$positive_rate/100)),
                                            vaccine = rbinom(input$camp_size, 1, prob = (input$vaccine_rate/100)),
                                            Quarantine = rep(0,each = input$camp_size))
            } else if (input$Analysis == 1){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = input$camp_size),
                                            initial = initial,
                                            id =  1:input$camp_size,
                                            status = rbinom(input$camp_size, 1, prob = (initial/100)),
                                            vaccine = rbinom(input$camp_size, 1, prob = (input$vaccine_rate/100)),
                                            Quarantine = rep(0,each = input$camp_size))
            } else if (input$Analysis == 2){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = input$camp_size),
                                            initial = initial,
                                            id =  1:input$camp_size,
                                            status = sample(initials, size = input$camp_size),
                                            vaccine = rbinom(input$camp_size, 1, prob = (input$vaccine_rate/100)),
                                            Quarantine = rep(0,each = input$camp_size))
            } else if (input$Analysis == 3){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = input$camp_size),
                                            initial = initial,
                                            id =  1:input$camp_size,
                                            status = rbinom(input$camp_size, 1, prob = (input$positive_rate/100)),
                                            vaccine = rbinom(input$camp_size, 1, prob = (initial/100)),
                                            Quarantine = rep(0,each = input$camp_size))
            } else if (input$Analysis == 4){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = initial),
                                            initial = initial,
                                            id =  1:initial,
                                            status = rbinom(initial, 1, prob = (input$positive_rate/100)),
                                            vaccine = rbinom(initial, 1, prob = (input$vaccine_rate/100)),
                                            Quarantine = rep(0,each = initial))
            } else if (input$Analysis == 5){
              camp_data_holder = data.frame(sim_n = rep(sim_n, each = input$camp_size),
                                            initial = initial,
                                            id =  1:input$camp_size,
                                            status = rbinom(input$camp_size, 1, prob = (input$positive_rate/100)),
                                            vaccine = rbinom(input$camp_size, 1, prob = (input$vaccine_rate/100)),
                                            Quarantine = rep(0,each = input$camp_size))
            }
            active_data_holder = NULL
            
            if(input$Analysis != 2){
            for (day_n in 0:input$Duration){
              test <- testing(camp_data_holder, input, active_data_holder, day_n, initial, sim_n)
              camp_data_holder = test$camp_data_holder
              active_data_holder = test$active_data_holder
              active_infections = test$active_infections
              
              Activities <- Infections(camp_data_holder, input, active_infections, initial)
              camp_data_holder = Activities$camp_data_holder
            }
              } else if (input$Analysis == 2){
              active_infections = nrow(filter(camp_data_holder, status == 1 & Quarantine == 0))
              active_data_holder <- data.frame(sim_n = sim_n,
                                               initial = initial,
                                               day = 0,
                                               Infections = sum(camp_data_holder$status),
                                               Active_Infections = active_infections,
                                               Quarantine = sum(camp_data_holder$Quarantine),
                                               initial_infections = sum(camp_data_holder$status))
              Activities <- Infections(camp_data_holder, input, active_infections)
              camp_data_holder = Activities$camp_data_holder
              
              for (day_n in 1:input$Duration){
                test <- testing(camp_data_holder, input, active_data_holder, day_n, initial, sim_n)
                camp_data_holder = test$camp_data_holder
                active_data_holder = test$active_data_holder
                active_infections = test$active_infections
                
                Activities <- Infections(camp_data_holder, input, active_infections, initial)
                camp_data_holder = Activities$camp_data_holder
              }
              
              
              }
            incProgress(amount = 1/(400*length(seq_loop)))
            return(active_data_holder)
          })
          
          active_data <- bind_rows(do.call(rbind.data.frame, sims))
          return(active_data)
        }

        active_data1 <<- active_data
        return(active_data)
      })
SIM_DF=eventReactive(输入$Simulate{
状态图(“最新”)
活动数据=空
如果(输入$Analysis==0){
seq_循环此链接可能会有所帮助: