我试图创建一个Shiny / flexdashboard Markdown文件,并且我已经将以下内容粘贴在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 :(得分:1)
尝试
data1 <- reactive(as.data.frame(table(subdata2()$UserCountry)))
虽然table()
返回的值在控制台上像矩阵一样打印,但它们有自己独特的类(table
)。它不由renderDataTable()
处理,需要data.frame
或matrix
。