【问题标题】:Subsetting data in shiny server.R file闪亮 server.R 文件中的子集数据
【发布时间】:2014-10-02 13:07:18
【问题描述】:

我正在尝试让一个简单的 Shiny 应用程序运行(这将是更大的开始)。我的问题是应用程序的 sever.R 部分中的子集数据似乎对我根本不起作用。

错误信息是:

eval(expr, 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 代码。在 Shiny 之外工作的东西在 server.R 程序中不起作用。

谁能给我任何提示我可能做错了什么?

我的基础数据集“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

【问题讨论】:

  • localx()localx?
  • 谢谢。我想我已经尝试过了,会尽快检查。不幸的是,Google API 现在让我失望了(403 错误代码 - 最终会自行修复)。
  • @jazzurro,因为localx 是一个反应式表达式,它必须在 Shiny 框架中使用 localx() 调用。
  • @cdeterman 对。谢谢你。

标签: r ggplot2 shiny


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这真的很有趣。不幸的是,它似乎对我没有用。我收到另一个众所周知的错误消息 - “错误:ggplot2 不知道如何处理反应类数据”。你可能明白为什么这让我慢慢发疯了……最好
  • 哦不 - 等一下 - 它工作!太感谢了。我已经在代码中尝试了上面 jazzurro 的提示 - 当我尝试上面的提示时,它就停止了工作。非常感谢!
  • @Jan,很高兴为您提供帮助。如果您对此感到满意,请接受答案。
  • 完成 - 你是个传奇!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2019-03-14
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
相关资源
最近更新 更多