将Shiny变量从ui.R传递给server.R

时间:2016-10-24 13:38:00

标签: r ggplot2 shiny

我从头开始重新发布这篇文章,希望有人能帮助我完成这个学习机会。

我在以下Shiny应用程序中将变量从ui.R传递到server.R时遇到了问题。

我也包括global.R。该文件的一部分ping我的基于云的MySQL数据库。我不想在这里分享密码;您可以将查询结果作为CSV文件(其中2个)here

问题 与server.R的第22行有关。代码按原样(y = n.emp,),按预期工作。当我用(y = input$quant,)替换它时,代码会中断。错误就在那一行。我已经孤立了。

我已经尝试过aes_string,如前所述。那没起效。 (也许我没有正确使用它?)

任何人都可以帮我这个吗?谢谢!

  

server.R

# Define server logic required to draw a histogram
shinyServer(function(input, output) {

  output$distPlot <- renderPlot({

### ----- MANIPULATE DATA ----- 

    colors17 <- c("#a7dfb9","#d0a0d4","#fde096","#96bbf1","#ecb489","#6eceea","#eaa99e","#8adbd3","#ddb9f1","#9cc18d","#ebaec8","#dceeb6","#b6bee4","#c5c88f","#dfb89b","#e9cf9d","#c8c09a")
    colors6 <- c("#74d5e0", "#e5b197", "#93c1ed", "#cfd6a0", "#dfb1d8", "#9adabe")

    naics_jll$market <- factor(naics_jll$m.mkt,
                          levels = as.character(MKT))
    naics_jll <- naics_jll %>%
      filter(m.mkt %in% input$markets
             # , (other), (filters), (here)
      )
### ----- PLOT -----    
    g <- ggplot(naics_jll)
    g + geom_bar(stat = "identity",
                 position = input$geom_bar_pos,
                 aes(x = m.mkt, 
                     y = n.emp,
                     fill = c1.name),
                 color = "lightgrey") +
      scale_fill_manual (values=colors17) +
#      facet_wrap(~ m.mkt) +
      labs( y = input$quant, title = "Market Structure", subtitle = "by market & industry") + 
      theme(strip.text.x = element_text(size = 8),
            axis.text.x  = element_text(angle=90, size=6))
  })
})
  

ui.R

# Define UI for application that draws a histogram
shinyUI(fluidPage(

  title = "Company Data Explorer",
  plotOutput('distPlot'),
  hr(),

  fluidRow(
    column(3,
           radioButtons("geom_bar_pos", "",
                        c("Stacked Bars" = "stack",
                          "Grouped Bars" = "dodge"),selected = "dodge")
    ),
    column(4, offset = 1,
           checkboxGroupInput("markets", "Include Markets:",
                                      c("Boston" = "BOS",
                                        "NYC" = "NYC",
                                        "Chicago" = "CHI",
                                        "San Francisco" = "SF",
                                        "Los Angeles" = "LA",
                                        "Washington, DC" = "DC"),
                      selected = c("BOS","NYC","CHI","SF","LA","DC"))),
    column(4,
           selectInput('quant', 'Y-Values', names(y_vals),names(y_vals)[[4]]))
  )
))
  

global.R

library(shiny)
library(RNeo4j)
library(tidyverse)
library(stringr)
library(ggplot2)

### GET DATA

## MySQL SERVER CONNECT
con <- dbConnect(MySQL(),
                 user = 'shiny_apps',
                 password = '****',
                 host = 'mysql.mvabl.com',
                 dbname='sandbox191')

qmain <- dbSendQuery(con, "SELECT * FROM naics_jll;")
naics_jll <- as.data.frame(dbFetch(qmain,n=-1),na.rm=TRUE)

dbHasCompleted(qmain)
dbClearResult(qmain)
dbDisconnect(con)

## LOAD CSV
naics_jll <- select(naics_jll,-n.msa_naics,-c1.id,-q.level,-q.qtr,-q.nbrhd,-N.BldgClass)
y_vals <- subset(naics_jll,select = which(sapply(naics_jll,is.numeric)))
dropdown <- c("m.mkt","c1.name","q.nbrhd")

### "LEVELS" VARIABLES (currently unused)
IND <- naics_jll %>% distinct(c1.name)
MKT <- naics_jll %>% distinct(m.mkt)

1 个答案:

答案 0 :(得分:0)

我终于在Joe Cheng's gist的帮助下解决了这个问题。我需要将我的数据源定义为反应。猜猜这是一个值得阅读的新主题!!