在R

时间:2019-01-10 18:50:36

标签: r shiny

我正在创建一个闪亮的应用程序,该应用程序根据所选的选项来绘制数据。

我当前的问题涉及滞后。 我尝试了两种选择:

  1. 创建一个存储数据列表(〜300 MB)。初始化runApp()时,此选项会产生1-2分钟的延迟,但当启动闪亮的应用程序时,在selectInput下切换选择之间的绘图会快速加载。

  2. 将每个选择的数据存储为单独的.rds文件(每个〜100 MB)。使用runApp()大约需要10秒。当我在选项之间进行切换时,大约需要6秒钟才能显示出图。

我期望数据集中样本的大小会增加,因此选项1的行为将发生变化,但是选项2应该相同,因为样本是分开存储的。看来选项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))

    }

0 个答案:

没有答案