2014-11-21 117 views
7

如何使用從響應包裝器中的renderUI元素獲取的值?使用Reactive renderUI值的R-Shiny

即我的代碼:

CompanyNames <- sqlQuery(connection, "SELECT Companynm FROM RiskMgm_Company") 

output$CompNameSelector <- renderUI({ 
selectInput("compName","Company Name:",as.vector(CompanyNames[,1])) 
}) 

CompID <- reactive({ 
CompID <<- sqlQuery(paste("SELECT CompanyID FROM RiskMgm_Company WHERE Companynm = '",compName,"'")) 
}) 

output$MotorSelector <- renderUI({ 
selectInput("MachSer","Machine:",sqlQuery(connection,paste("SELECT Motor_func FROM RiskMgm_Motor WHERE Company_ID='",CompID,"'"))) 
}) 

我的錯誤:

Successfilly opened connection to db 
Error in paste("SELECT CompanyID FROM RiskMgm_Company WHERE Companynm = '", : 
could not find function "compName" 

我在做什麼錯?基本上我想要的是由SQL查詢給出的公司列表。然後,根據本公司選定的,它會顯示屬於該公司在未來的下拉框中

感謝

回答

7

你會是指通過其ID的元素例如input$compName電機。作爲一個人爲的例子,在這裏 是一個簡單的閃亮的應用程序與兩個selectInput的。第二個selectInput的選擇取決於第一個的值。引用窗口小部件由renderUI創建的輸出沒有從引用相同的部件,如果他們從一開始就一直在UI.R不同:

library(shiny) 
myDF <- data.frame(A = 1:4, B = 3:6, C = 6:9, D = 10:13) 
runApp(
    list(
    ui = fluidPage(
     uiOutput("myList"), 
     uiOutput("myNumbers") 
    ) 
    , server = function(input, output, session){ 
     output$myList <- renderUI({ 
     selectInput("compName", "Company Name:", LETTERS[1:4]) 
     }) 

     output$myNumbers <- renderUI({ 
     selectInput("compNo", "Product Line:", myDF[, input$compName]) 
     }) 
    } 
    ) 
) 
+0

這奏效了,謝謝! – 2014-11-21 03:41:43