2016-09-27 55 views
0

我正在嘗試創建一個Shiny/flexdashboard Markdown文件,並且我在R代碼塊中嵌入了以下內容。基本上,它子集使用兩個輸入的輸入數據幀 - 第二輸入取決於第一:如何在Shiny響應表子集上執行base R函數?

output$Box1 = renderUI(selectInput('sector', 
           'Sector', 
           c(levels(test$Sector),"pick one"), 
           "pick one")) 

output$Box2 = renderUI(
if (is.null(input$sector) || input$sector == "pick one"){return() 
}else selectInput('FA', 
        'Functional Area', 
        c(levels(test$FA[which(test$Sector == input$sector)]),"pick one"), 
        "pick one")) 

subdata1 = reactive(test[which(test$Sector == input$sector),]) 
subdata2 = reactive(subdata1()[which(subdata1()$FA == input$FA),]) 
renderDataTable({subdata2()}, options = list(dom = 'lpt')) 

現在,這種工作正常到子集的數據幀(扇區,然後FA),並且子集化數據幀是可見在儀表板上通過renderDataTable

我希望做的是對無功的數據子集一樣table執行的東西,對因子水平創建一個應急表:

data1 <- reactive(table(subdata2()$UserCountry)) 

,然後再利用這個新表,例如:

renderDataTable({data1()}, options = list(dom = 'lpt')) 

當我嘗試這個,新表不呈現。

有沒有辦法成功運行它?

+0

需要一個可重複的例子 – Carl

回答

1

嘗試

data1 <- reactive(as.data.frame(table(subdata2()$UserCountry))) 

雖然通過table()返回的值被印刷像在控制檯上的矩陣,它們有自己的不同的類(table)。它不由renderDataTable()處理,這需要data.framematrix

相關問題