2014-11-04 118 views
1

我嘗試構建一個閃亮的應用程序。它實際上是有效的。基本上我有一個數據集(20'000行),我用滑塊和Groupcheckboxes更改,然後使用ggmap繪圖到一個地圖。但它非常慢(需要10到20秒左右的改變)。有沒有可能使應用程序運行得更快。它是否與子集函數有關?或者是因爲ggmap情節?我添加了我的通用服務器代碼。R中緩慢閃亮的應用程序

會感激各種幫助。

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) 

    } 
) 
+0

1)最好的,如果你用'閃亮'標記你的問題。 2)我認爲你的結構化你的應用程序的方式,它會重新評估整個數據集,每次你改變一些東西。 3)儘量不要使用子集,如果你可以,儘可能使用[] http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset – 2014-11-04 16:10:02

+0

我認爲你可以使用dplyr來解決這個問題,它可以真正讓你的計算更快。 – 2017-03-19 18:38:51

回答

0

我不能完全肯定,但這裏是我的假設。它是你正在模擬每次通話的數據集/子集。嘗試添加一個提交按鈕,以確保所有命令一次發生。每次移動滑塊時,都會重新渲染代碼,從而重新運行腳本。所以,如果你移動它3次,它基本上是再次加載它。 我發現它可能是因爲它沒有給你的計算機上很大的空間。出於某種原因,我的一些應用程序在服務器上的性能比我的筆記本電腦要好很多。