2017-07-19 41 views
0

我期待構建一個交互式數據可視化。 我的數據集包含1244個OBS和9個變量 共享數據如下截圖: Screenshot of sample Dataset使用反應值更新代碼

流量數據可視化:

  1. 從一個輸入框,選擇公司名稱,它會給一個輸出表(從主數據集公司的子集)

  2. 從一個輸入框上述compary的選擇DIR

  3. 刪除DIR後,它將輸出公司名稱(在檢查主數據集後)(如果存在)。我已經寫

代碼如下規定,但它不工作。我將非常感謝寶貴意見。提前致謝。

UI

navbarPage(
title = "SHELL COMPANY", 
tabPanel("COMPANY INFO", 
fluidRow(
    column(4, selectInput("name","COMPANY NAME:", c("ALL", unique(as.character(cmp$`STD COMPANY NAME`))))), 
    column(4, DT::dataTableOutput("table") 
))), 
tabPanel("DIR INFO", 
    fluidRow(
    column(4, selectInput("dir","DIRECTOR NAME:", sort(unique(as.character(cmp$`DIR NAME`)))))), 
    column(4, DT::dataTableOutput("table2")) 
)) 

服務器

function(input,output) 
{ 
data <- cmp 
rv <- reactiveValues() 
observe({ 
rv$table <- cmp 
if(input$name!="ALL"){ 
    rv$table <- data[data$`STD COMPANY NAME`==input$name,] 
} 
}) 
output$table <- DT::renderDataTable(DT::datatable(
{ 
    rv$table 
})) 
output$table2 <- DT::renderDataTable(DT::datatable(
{ 
    data2 <- rv$table 
    data2 <- subset(rv$table, data$'DIR NAME'==input$dir, select=c(`STD COMPANY NAME`, `DIR NAME`)) 
    data2 
}))} 
+1

一個小數據集( ),seee https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example會有幫助。 – Florian

+0

編輯時,我在輸出$ table2中移動了一個花括號。檢查這是否改變了一些。請說出你面臨的錯誤。 –

+0

爲什麼你在子集中有不同的引用(數據,數據$'DIR NAME'==輸入$ dir,select = ....'? –

回答

0

如果您所提供的片段是你所得到的應用程序有關的錯誤,看來你嘗試分配output$table另一個變量裏面output$table2data2 <- table。你不能像這樣分配output$...。嘗試創建單獨的表(?reactiveValues()可能會派上用場),並在兩個輸出使用它,所以邏輯是這樣的:

rv <- reactiveValues() 
observe({ 
    rv$table <- cmp 
    if(input$name!="ALL"){ 
     rv$table <- data[data$`STD COMPANY NAME`==input$name,] 
    } 
}) 

使用dput然後用它在這兩個output$tableoutput$table2

+0

reactiveValues()確實有效。我面臨的最後一個問題是我只想突出顯示tableoutput(表)中的那些DIR名稱。我現在使用這個命令列(4,selectInput(「dir」,「DIRECTOR NAME:」,sort(unique(as.character(cmp $'DIR NAME')))))),我知道這是錯誤的。我應該調用什麼而不是cmp $'DIR NAME'? – PritamJ

+0

我解決了它使用updateSelectizeInput()函數 – PritamJ

+0

這是做到這一點的正確方法! –