2016-09-27 53 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

相关问题