我想知道是否/如何使用 R Shiny 的输入对数据表的行进行重新排序。下面的示例实际上会在输入更改时重新生成表格,但我希望输入发生更改时,会发生与单击相关排序按钮相同的操作。有什么方法可以实现这个目标吗?
library(shiny)
ui = shinyUI(pageWithSidebar(
headerPanel('Examples of DataTables'),
sidebarPanel(
radioButtons('var', 'Variable to sort by',
c(mpg='mpg',
cyl='cyl'),
'cyl')
),
mainPanel(
dataTableOutput("mytable")
)
)
)
server = shinyServer(function(input, output) {
output$mytable = renderDataTable({
mtcars[order(mtcars[,input$var]),]
}, options = list(orderClasses = TRUE, LengthMenu = c(5, 25, 50), pageLength = 25))
})
shinyApp(ui,server)
你的服务器需要有
reactive
功能,否则它不会反应。我还将 =
更改为 <-
,这更像是 R
中的约定
library(shiny)
ui <- shinyUI(pageWithSidebar(
headerPanel('Examples of DataTables'),
sidebarPanel(
radioButtons('var', 'Variable to sort by',
c(mpg='mpg',
cyl='cyl'),
'cyl')
),
mainPanel(
dataTableOutput("mytable")
)
)
)
server <- shinyServer(function(input, output) {
sortTable <- reactive({
mtcars[do.call(order, mtcars[as.character(input$var)]),]
})
output$mytable <- renderDataTable({
sortTable()
}, options = list(orderClasses = TRUE, LengthMenu = c(5, 25, 50), pageLength = 25))
})
shinyApp(ui,server)