没有传递闪亮的server.r / ui.r变量

时间:2015-05-28 15:56:24

标签: r shiny

*编辑 道歉 - 好的,将编辑此而不是从现在开始添加。

因此;谢谢你的建议,但他们只是没有为我工作。结果,我完全回归基础。从闪亮的帮助网站(第5节,第2回答)中取出原始脚本,然后简单地粘贴我周围的东西:

# server.R

setwd("C:/Users/Me/Desktop/Shapefiles/ITV Region (Working) - Shiny App/")
require(maptools)
require(ggplot2)
require(RColorBrewer)
require (ggmap)
require (scales)
require (dplyr)
source("C:/Users/Me/Desktop/Shapefiles/poly_coords.r")

## load the shapefile
Shpfile <- readShapePoly("shpfiles/ITVRegion.shp")
names(Shpfile)
names(Shpfile)<- c("ID", "NAME", "Shape_Length", "Shape_Area")
Shpfile_geom <- poly_coords(Shpfile)

mapdata <-  read.table("data/ITVRegionKeyedData_Test.csv", header = TRUE, sep=",")
Plotdata <- left_join(Shpfile_geom, mapdata)

print("Build has run successfully")

shinyServer(
function(input, output) {output$map <- renderPlot({

  ggplot()+
  geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = input$metric), color = "black", size = 0.25) +
  coord_map()  ## This maintains shape and avoids distortion
})
}
)

没什么特别的。没有转换。没有单独的反应实例。 我收到错误报告:未找到对象'输入'

如果我用简单的家庭(没有引号)切换输入$ metric,那么地图会在数据中呈现我的家庭列。我只需要将从我的UI中选择的度量列放入geom_polygon块。

也许只是我不理解数据类型,我需要将UI中的文本转换为字段标题?

# ui.R

shinyUI(fluidPage(
titlePanel("censusVis"),

sidebarLayout(
sidebarPanel(
helpText("ITV"),

selectInput("metric", 
label = "Choose a variable to display",
choices = c("Households", "Population", "Adults15", "Adults18"), selected = "Population")

 ),
 mainPanel(

 plotOutput("map")
 )
 )
 ))

2 个答案:

答案 0 :(得分:0)

如果您将switch声明设置为renderPlot以外的 datafield <- reactive({switch(input$FieldMetric, "Household" = Plotdata$HHold_Est_2014, "Population" = Plotdata$Pop_Est_2014, "Adults 15+" = Plotdata$Adults15_Est_2014, "Adults 18+" = Plotdata$Adults18_Est_2014 }) ,则可能效果会更好:

fill=datafiled()

然后在制作情节时使用geom_polygon

中的li

答案 1 :(得分:0)

好吧,我有一个有效的版本,但它有点难看。我比以往任何时候都更加确信我只是混淆了如何引用从SERVER.r中的UI.r返回的输入$ metric,并且无论出于什么原因我想要一个字段标题,但它要么返回数据列(一系列整数)或其他一些对象/数据类型。

我使用if / else绕过了它。也许有人将来能够改进原有的解决方案......

shinyServer(
function(input, output) {output$map <- renderPlot({

  if (input$metric=="Households"){
  ggplot() + coord_map() +
  geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Households), color = "black", size = 0.25)

  }else if (input$metric=="Population"){
    ggplot() + coord_map() +
      geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Population), color = "black", size = 0.25)

  }else if (input$metric=="Adults15"){
    ggplot() + coord_map() +
      geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Adults15), color = "black", size = 0.25)

  }else if (input$metric=="Adults18"){
    ggplot() + coord_map() +
      geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Adults18), color = "black", size = 0.25)

  }else return()
})

} )