Асинхронное программирование в R с пакетом будущего - PullRequest
0 голосов
/ 21 июня 2019

Я новичок в асинхронном программировании на R с пакетом Future Package, поэтому мне нужна помощь.Я пытаюсь создать простое приложение с rshiny, которое поддерживает асинхронное программирование.Итак, мой код в виде гистограммы, слайдера, простой текстовой печати и функции read.csv для чтения большого CSV-файла.Поэтому я планирую до того, как моя функция read.csv будет работать в фоновом режиме с использованием будущего пакета в R, я бы хотел иметь контроль над другим моим приложением.

But my code waits for the CSV file to read. Any help will be appreciated. 

    library(promises)
library(future)
library(shinydashboard)
library(shiny)
library(tidyverse)
plan(multiprocess)

    enter code here
#UI parts
ui <- dashboardBody(fluidRow(box(tableOutput("input1")),
                             box(textOutput("input2"))),

                    fluidRow(box(
                      sliderInput(
                        inputId = "bins",
                        label = "Number of bins:",
                        min = 1,
                        max = 5,
                        value = 2
                      )
                    ),
                    box(plotOutput(outputId = "distPlot"))),


                    fluidRow(box(
                      sliderInput(
                        "slider2",
                        label = h3("Slider Range"),
                        min = 0,
                        max = 100,
                        value = c(40, 60)
                      )
                    ),
                    box(verbatimTextOutput("range"))))

#server part
server <- function(input, output, session) {
  output$input1 <- renderTable({
    promise <- future((read.csv("data/sample_large.csv")))
    promise %...>% head() %...>% print()
  })

  output$input2 <- renderText({
    print("hello")
  })
  output$distPlot <- renderPlot({
    dist <- rnorm(input$bins)
    hist(dist)
  })
  output$range <- renderPrint({
    input$slider2
  })

}
shinyApp(ui = dashboardPage(dashboardHeader(),
                            dashboardSidebar(),
                            ui),
         server = server)
...