我在这里问,因为我在其他地方搜索过,无法找到答案。
我想知道是否/如何使用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)
答案 0 :(得分:0)
您的服务器需要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)