r语言 - 演示使用future_promise和zeallot不工作



我正在尝试使用Shiny和异步编程,希望在更大、更复杂的公共应用程序中使用它。

在这个例子中,我认为unlist()将等待直到v1的值返回,因为使用了future_promise和承诺管道%...>%

但是,我得到错误:

Error in unlist: object 'v1' not found

我怎样才能得到这个演示代码的工作?

应用程序。R

library("zeallot")
library("shiny")
library("primes")
library("future")
library("promises")
library("tidyverse")
plan(multisession)
source("/home/law/whatbank_multicore_test/src/expensive_calc.R")
ui <- fluidPage(
actionButton("do", "Do Expensive Calc"),
textOutput("text")
)
server <- function(input, output, session) {
observeEvent(input$do, {
output$text <- renderText({
future_promise(zeallot::`%<-%`(c(v1, v2), expensive_calc()), seed = TRUE) %...>% 
{
tmp <- unlist(v1)
}
})
})
}
shinyApp(ui, server)

expensive_calc。R

expensive_calc <- function(){

min <- 10000
max_num <- sample(80000:210000, 1)
rap <- ruth_aaron_pairs(min, max_num, distinct = FALSE)

list(rap, 11)
}

正如在RStudio社区中向我指出的那样,zeallot调用需要在future_promise大括号内。解决方案如下:

server <- function(input, output, session) {
observeEvent(input$do, {
output$text <- renderText({
future_promise(seed = TRUE) %...>% 
{
zeallot::`%<-%`(c(v1, v2), expensive_calc())
tmp <- unlist(v1)
}
})
})
}

相关内容

  • 没有找到相关文章

最新更新