【问题标题】:Datatable (DT) Shiny R - Custom SearchPane from comma-separated stringDatatable (DT) Shiny R - 来自逗号分隔字符串的自定义 SearchPane
【发布时间】:2021-07-30 00:47:01
【问题描述】:

我正在尝试创建一个 DT SearchPanes 自定义过滤器,它将逗号分隔字符串的列视为单独的条目。我知道如何在 Datatables 中进行这项工作(请参阅 here),但我正在努力使用正确的语法使其在 DT 中工作(this 帖子很有帮助,但并没有让我到达那里) .

当我运行应用程序时,我得到一个空的 SearchPane,上面写着“表中没有可用的数据”。

这是我的代码。我对 DT(和 Javascript)很陌生,所以我想知道我是否遗漏了一些明显的东西?任何帮助将不胜感激!

server <- function(input, output) {
  
  cover <- read.csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vQaZCDpH85S4jj0kgHhTDdJTYrjMCyo1CZOHwAlkEl3YOBgFwVwdHZ8xmAa-xW7UHLo8_Snkrjj450B/pub?gid=0&single=true&output=csv")
  
  cover$Cover.crop <- as.factor(cover$Cover.crop)
  cover$Type <- as.factor(cover$Type)
  cover$Growing.Season <- as.factor(cover$Growing.Season)
  
  colnames(cover)<- c("Cover Crop","Growing Season","Crop Category","Min. Water (in)", "Min. Soil pH","Max. Soil pH","Environmental Benefits","USDA Hardiness Zones","Max. Height (in)","Bloom Time","Perennial?","Salinity Tolerance","Poor Drainage Tolerance", "Use Before Legume?","Forage Quality")
   
  output$covertable <- DT::renderDataTable(server=FALSE, {
    
    DT::datatable(
      cover,
      options = list(
        dom = 'Pfrtip', 
        columnDefs = list(
          list(
            searchPanes = list(
              show = TRUE,
              options = list(
                  orthogonal = 'sp',
                  value = JS(
                    "function(rowData, rowIdx) {
          if (type === 'sp') {
            return data.split(', ')
          }
          return data;}"
                  ))),
            targets = 7
          ),
          list(
            searchPanes = list(show = FALSE), targets = 2:15
          )
        )
      ),
      extensions = c('Select', 'SearchPanes'),
      selection = 'none'
    )
  })}

ui <- fluidPage(
  hr(),
  DT::dataTableOutput('covertable')  
)

shinyApp(ui = ui, server = server)

【问题讨论】:

    标签: r shiny dt


    【解决方案1】:

    我没试过,但是这里是链接中给出的代码的翻译。

    datatable(
      cover,
      extensions = c('Select', 'SearchPanes'),
      selection = 'none',
      options = list(
        dom = "Pfrtip", 
        searchPanes = list(
          threshold = 1,
          columns = list(7)
        ),
        columnDefs = list(
          list(
            targets = 7,
            render = JS(
              "function (data, type, row) {",
              "  if (type === 'sp') {",
              "    return data.split(', ');",
              "  }",
              "  return data;",
              "}"
            ),
            searchPanes = list(orthogonal = "sp")
         )
       )
      )
    )
    

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 2017-04-17
      • 2014-05-27
      • 1970-01-01
      • 2021-05-16
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多