关于ggplot2:在闪亮的server.R文件中设置数据

Subsetting data in shiny server.R file

我正在尝试使一个简单的Shiny应用程序正常工作(这将是更大事情的开始)。我的问题是,在应用程序的sever.R部分中设置数据似乎对我完全无效。

错误消息是:

Error in eval(expr, envir, enclos) : object 'localA3' not found

这是我的server.R文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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代码。在Shiny之外有效的方法在server.R程序中不起作用。

任何人都可以给我有关我可能做错了什么的提示吗?

我的基本数据集" local7.csv"的前十个条目如下:

1
2
3
4
5
6
7
8
9
10
11
    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


您需要将aes调用更改为aes_string,并使所有元素变成字符串,以便与geom_point保持一致。在使用对象和字符串之前。 uiR结束时的以下小改动对我有用。

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