2014-10-02 20 views
1

我試圖讓一個簡單的Shiny應用程序工作(這將是更大的事情的開始)。我的問題是,在應用程序的sever.R部分中對數據進行子集處理對我來說似乎沒有任何作用。在閃亮的server.R文件中設置數據

的錯誤信息是:

錯誤的eval(表達式,ENVIR,enclos):對象localA3'未找到

這是我的server.R文件:

# server.R 

library(ggmap) 
library(scales) 
library(grid) 

localA <- read.csv("local7.csv", header=TRUE) 

shinyServer(
    function(input, output) { 

    output$map <- renderPlot({ 

     sub <- switch(input$sub, 
        "a" = "a", 
        "b" = "b", 
        "c" = "c") 


     opt <- switch(input$opt, 
        "data" = "data", 
        "obs" = "obs") 


     localx = reactive({ 
     x <- subset(localA, factor==paste(sub)) 
     return(x) 
     }) 

     localA3 <- localx() 

     testmapA <- qmap("England", zoom = 6, color = "bw", legend = "topleft") 

     testmapA + 
     geom_point(aes(x = lon, y = lat, colour = localA3$opt, size = localA3$opt), data = localA3) 

    }) 
    } 
) 

...這是我的UI.R文件:

# UI.R 

shinyUI(fluidPage(
    titlePanel("A Shiny Example"), 

    sidebarLayout(
    sidebarPanel(
     helpText("Create maps with random data for UK local authorities."), 

     selectInput("sub", 
        label = "Choose a category to display", 
        choices = c("a", "b", "c"), 
        selected = "a"), 

     selectInput("opt", 
        label = "Choose a variable to display", 
        choices = c("data", "obs"), 
        selected = "data"), 


     sliderInput("range", 
        label = "Range of interest:", 
        min = 0, max = 100, value = c(0, 100)) 
    ), 

    mainPanel(plotOutput("map")) 
) 
)) 

無論出於何種原因,R告訴我它無法找到對象'localA3'。我試圖用許多不同的方式來編寫代碼的子集部分 - 從函數上的反應表達式到簡單的R代碼。 Server.R程序無法在Shiny外工作。

任何人都可以給我任何提示,我可能會做錯什麼?是

前十個我的基礎數據集「local7.csv」的條目如下:

lon   lat   data  obs   factor 
1 -0.1277583 51.5073509 87.828234 20.49259318 a 
2 0.1293497 51.5464828 68.79663358 98.0480588 a 
3 -0.1997  51.6444  24.35460542 76.77994522 b 
4 0.154327 51.439933 71.51349632 28.05491455 a 
5 -0.2710568 51.5672808 91.31933313 69.15576621 c 
6 0.013156 51.406025 57.98920169 56.12171479 a 
7 -0.1588255 51.5517059 45.68928313 29.73514486 a 
8 -0.098234 51.376165 29.47027315 96.1460748 b 
9 -0.3415002 51.5250257 36.46005588 76.66948508 c 
10 -0.0837  51.6516  43.57721438 50.65123884 c 
+0

'localx()'到'localx'? – jazzurro 2014-10-02 13:24:12

+0

謝謝。我想我已經嘗試過了,會盡快檢查。不幸的是,Google API現在讓我失望了(403錯誤代碼 - 最終會自行修復)。 – Jan 2014-10-02 13:44:15

+0

@jazzurro,因爲'localx'是一個反應表達式,所以必須在Shiny框架中用'localx()'調用它。 – cdeterman 2014-10-02 13:46:07

回答

0

您需要將您的通話aes更改爲aes_string,使所有元素的字符串,所以你與geom_point一致。在使用對象和字符串之前。在你最後的小小變化uiR適合我。

testmapA + 
      geom_point(aes_string(x = "lon", y = "lat", colour = input$opt, size = input$opt), data = localA3) 
+0

謝謝,這真的很有趣。不幸的是,它似乎並沒有爲我做伎倆。我得到另一個衆所周知的錯誤消息 - 「錯誤:ggplot2不知道如何處理類反應數據」。你可能會明白爲什麼這會慢慢地讓我瘋狂......最好 – Jan 2014-10-02 16:18:58

+0

哦不 - 等一下 - 它工作!非常感謝。我曾經在代碼中嘗試過jazzurro的提示 - 並且在我嘗試上述提示時停止了它的工作。非常感謝! – Jan 2014-10-02 16:22:36

+0

@Jan,很高興幫助。如果這讓你滿意,請接受答案。 – cdeterman 2014-10-02 16:34:17