首页 > 解决方案 > 动态替换 R Shiny 数据表中的选项

问题描述

我想即时更改数据表的语言

我有以下代码

output$prr2 <- renderDataTable({  
prr()}, options = list(
autoWidth = TRUE,
columnDefs = list(list(width = '50', targets = c(1, 2) ) ),
language = list(url = if(getLanguage()=='gr') '//cdn.datatables.net/plug-ins/1.10.11/i18n/Greek.json' else  
  '//cdn.datatables.net/plug-ins/1.10.11/i18n/English.json' ))

getLanguage() 返回 selected_language 的值,prr() 返回 data.frame。

我想做这样的事情,以便在下拉 selected_language 中选择不同的语言后更改表格的选项

proxy = dataTableProxy('prr2')
observeEvent(input$selected_language,{ replace language option of datatable prr2})

对此有任何想法吗?

标签: rshinydt

解决方案


我无法测试,因为您没有提供可重现的示例。我会尝试

output$prr2 <- renderDataTable({  
  prr()
}, options = exprToFunction(list(
  autoWidth = TRUE,
  columnDefs = list(list(width = '50', targets = c(1, 2))),
  language = list(
    url = ifelse(getLanguage()=='gr', 
                 '//cdn.datatables.net/plug-ins/1.10.11/i18n/Greek.json', 
                 '//cdn.datatables.net/plug-ins/1.10.11/i18n/English.json')
  )
)))

编辑

output$prr2 <- renderDataTable({  
  datatable(
    prr(),
    options = exprToFunction(list(
      autoWidth = TRUE,
      columnDefs = list(list(width = '50', targets = c(1, 2))),
      language = list(
        url = ifelse(getLanguage()=='gr', 
                     '//cdn.datatables.net/plug-ins/1.10.11/i18n/Greek.json', 
                     '//cdn.datatables.net/plug-ins/1.10.11/i18n/English.json')
      )
    )
    )
  )
})

编辑 2

完整的应用程序:

library(shiny)
library(DT)

ui <- fluidPage(
  radioButtons("language", "Language", choices = c("gr", "en")),
  DTOutput("prr2")
)

server <- function(input, output, session){
  output$prr2 <- renderDT({  
    datatable(
      iris,
      options = exprToFunction(list(
        autoWidth = TRUE,
        columnDefs = list(list(width = '50', targets = c(1, 2))),
        language = list(
          url = ifelse(input$language=='gr', 
                       '//cdn.datatables.net/plug-ins/1.10.11/i18n/Greek.json', 
                       '//cdn.datatables.net/plug-ins/1.10.11/i18n/English.json')
        )
      ))
    )
  })
}

shinyApp(ui, server)

推荐阅读