在R中缓慢闪亮的应用

时间:2014-11-04 15:52:28

标签: r shiny

我尝试构建一个闪亮的应用程序。它实际上是有效的。基本上我有一个数据集(20'000行),我用滑块和Groupcheckbox改变,然后使用ggmap绘制到地图。但它确实很慢(改变大约需要10到20秒)。有没有可能让应用程序运行得更快。它与子集函数有关吗?或者是因为ggmap情节?我添加了我的通用服务器代码。

非常感谢各种帮助。

shinyServer(

function(input, output) {

data_subset <- reactive({

   subset(pladata_no_na_loc, (pladata_no_na_loc$FUEL_FACTOR == input$fueltype[1] | 
           pladata_no_na_loc$FUEL_FACTOR == input$fueltype[2] |
           pladata_no_na_loc$FUEL_FACTOR == input$fueltype[3] |
           pladata_no_na_loc$FUEL_FACTOR == input$fueltype[4] |
           pladata_no_na_loc$FUEL_FACTOR == input$fueltype[5] |
           pladata_no_na_loc$FUEL_FACTOR ==  input$fueltype[6] |
           pladata_no_na_loc$FUEL_FACTOR == input$fueltype[7]) &

         ((pladata_no_na_loc$MW >= input$slider_mw[1]) & (pladata_no_na_loc$MW <          
          input$slider_mw[2] ) ) & 

       ((pladata_no_na_loc$MIN_YEAR >= input$slider_year[1]) & (pladata_no_na_loc$MIN_YEAR < 
       input$slider_year[2] ) ), 
       select = c("enipedia_latitude", "enipedia_longitude", "MW_FACTOR", "MW", "FUEL_FACTOR"),   
       drop = FALSE)


      }) 


output$map <- renderPlot({ 



  mapPoints <-  ggmap(map) +  
              geom_point(data = data_subset(), drop = FALSE ,
             aes(x = enipedia_longitude, y = enipedia_latitude, size = MW, color = FUEL_FACTOR), 
             alpha = .5)

             print(mapPoints)

      }, height = 900, width = 1000)

   }
  )

1 个答案:

答案 0 :(得分:0)

我不完全确定,但这是我的假设。它是你在每次调用时推测数据集/子集。尝试添加提交按钮以确保一次发生所有命令。每次移动滑块时,它都会重新呈现代码,从而重新运行脚本。因此,如果你移动它3次,它基本上是再加载它。 我发现它可能是因为它不会给你的计算机留出太多空间。出于某种原因,我的一些应用程序在服务器上比我的笔记本电脑做得更好。