2016-10-24 5 views
0

私はこの学習の機会を誰かが私に教えてくれることを期待してこれを最初から再投稿しています。ui.Rからserver.RにShinyの変数を渡します

次のShinyアプリケーションで、ui.Rからserver.Rに変数を渡す際に問題があります。

私はglobal.Rも含んでいます。そのファイルの1つのセクションが私のクラウドベースのMySQLデータベースをpingします。私はここでそのパスワードを共有したくなかった。クエリ結果を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) 
+0

必要なものは 'aes_string'です。 http://stackoverflow.com/questions/22309285/how-to-use-a-variable-to-specify-column-name-in-ggplot –

+0

これをありがとう。私はそれを試しました(私の元の記事で編集されたコード)、それは渡し変数の部分を過ぎてしまいました。しかし、私はまだ予期しない結果を得ています。 (元の投稿の一番上の私のコメントを参照してください) – Steve

+0

'filtered'はあなたのデータフレームの権利ですか?それで 'aes'を明示的な変数、' filtered [[input $ facet_row]] 'と呼ぶことができます。 – mRcSchwering

答えて

0

私はついにそれをJoe Cheng's gistの助けを借りて解決しました。自分のデータソースをリアクティブとして定義する必要がありました。それは読み上げる新しいテーマだと思います!

関連する問題