我正在创建一个闪亮的应用程序,该应用程序根据所选的选项来绘制数据。
我当前的问题涉及滞后。 我尝试了两种选择:
创建一个存储数据列表(〜300 MB)。初始化runApp()时,此选项会产生1-2分钟的延迟,但当启动闪亮的应用程序时,在selectInput下切换选择之间的绘图会快速加载。
将每个选择的数据存储为单独的.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))
}