Как уменьшить задержку при загрузке данных для блестящего приложения в R - PullRequest
0 голосов
/ 10 января 2019

Я создаю блестящее приложение, которое отображает данные в зависимости от выбранного варианта.

Моя текущая проблема связана с лагом. Я пробовал два варианта:

  1. создать список сохраненных данных (~ 300 МБ). Эта опция создает 1-2-минутную задержку при инициализации runApp (), но когда запускается блестящее приложение, графики быстро загружаются между вариантами переключения в selectInput.

  2. Сохраните данные для каждого выбора в виде отдельного файла .rds (~ 100 МБ каждый). Задержка составляет около 10 секунд с помощью runApp (). Когда я переключаюсь между вариантами выбора, отображение графиков занимает около 6 секунд.

Я ожидаю увеличения размера выборок в моем наборе данных, поэтому поведение с вариантом 1 изменится, но второй вариант должен быть таким же, так как образцы хранятся отдельно. Похоже, вариант 2 лучше, но мне не нравится отставание при загрузке графиков.
Поэтому я хотел узнать, есть ли какие-нибудь советы по изменению моего подхода или есть ли альтернативные способы работы с большими наборами данных, когда дело доходит до загрузки данных для «блестящих»?

См. Пример

red1.rds, red2.rds, red3.rds хранятся в списке, который сохраняется как sample_data.rds:

$red1.rds

x y
1 3
5  4
3  7

$red2.rds

x y
1 3
8  5
3  7

$red3.rds

x y
1 3
2  6
3  7


samp <- readRDS("data/sample_data.rds")  #option 1 loading a list of data at start

    ui <- fluidPage(

             selectInput(inputId = "sample",
                         label = "Select a sample",
                         choices = c("SampA" = 'red1', "SampB" = 'red2', "SampC" = "red3")
                         selected = 1 ), 
    plotOutput("samplePlot")
    )

    server <- function(input, output){

    samp_data <- reactive <- ({

samp <- samp[paste0(input$sample, ".rds")][[1]]    #option 1
    samp <- readRDS(paste0("data/", input$sample, ".rds")) #option 2 reading each file which has been saved individually in this case. 


    })


    output$samplePlot <- renderPlot({
st <- samp()
ggplot(st)+ggcol(aes(x, weight = y))

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...