簡體   English   中英

renderDataTable中的Rstudio Shiny被動選項列表

[英]Rstudio Shiny reactive options list in renderDataTable

我試圖改變Shiny中renderDataTable調用的選項,以取決於輸入變量的值,在本例中是一個復選框。

第一個復選框成功更改表的內容,如果選中則再添加一列。 第二個復選框不會更改表的選項。 請參閱下面的代碼,我正在加載數據表和其他擴展的更新版本,但這似乎沒有任何影響。 第三個復選框也不會改變表格中條目的格式,這是我最終想要做的。

有任何想法嗎?

# server.R
library("ggplot2")
shinyServer(function(input, output, session) {
     bold = reactive ({
         bold = ''
         bold = paste0(bold,'function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {')
          bold = ifelse(input$checkbox3,paste0(bold),paste0(bold,'if (parseFloat(aData[0]) >= 0.1) { $("td:eq(0)", nRow).css("font-weight", "bold"); }'))
          bold = paste0(bold,'}')
          return(bold)
     })
    output$mytable = renderDataTable({
              diamonds[,1:ifelse(input$checkbox1,6,5)]
          }, options = list(fnRowCallback = I(bold()),aaSorting=list(list(2, ifelse(input$checkbox2,"asc","desc"))))
    )
  }
)


# ui.R
shinyUI({
      pageWithSidebar(
              h1('Diamonds DataTable with TableTools'),
              tagList(
                        singleton(tags$head(tags$script(src='jquery.dataTables.min.js',type='text/javascript'))),
                        singleton(tags$head(tags$script(src='TableTools.min.js',type='text/javascript'))),
                        singleton(tags$head(tags$script(src='dataTables.colReorder.min.js',type='text/javascript'))),
                        singleton(tags$head(tags$script(src='colvis.js',type='text/javascript'))),
                        singleton(tags$head(tags$script(src='ZeroClipboard.min.js',type='text/javascript'))),
                        singleton(tags$head(tags$link(href='TableTools.min.css',rel='stylesheet',type='text/css'))),
                        singleton(tags$head(tags$link(href='ColVis.css',rel='stylesheet',type='text/css')))
                        , tags$head(
                                    tags$style(HTML("
                        .cvclear{
                         text-align:right}")
                                                       )
                                  )
                      ),
              tabPanel("foo",
                checkboxInput("checkbox1", "add one more column", FALSE),
                checkboxInput("checkbox2", "sort [desc] or [asc]", FALSE),
                checkboxInput("checkbox3", "no bold", FALSE),
                dataTableOutput("mytable")
                       )
            )
  })

該選項聲明為:

"aaSorting": [[2,'asc']]

在R中

options = list(aaSorting = list(list(2, 'asc')))

所以你需要交換你的c作為list 但這里的邏輯是錯誤的。

如果啟用了排序,則DataTables將在初始化時執行第一次排序。 您可以使用此變量定義執行排序的列以及排序方向。 aaSorting數組應包含一個數組,用於最初排序的每列,包含列的索引和方向字符串('asc'或'desc')。

因此,此選項僅適用於表的初始化。 我不認為Shiny一旦形成就重新初始化表,所以這不會起作用,只有在第一次初始化表時才能工作。 您的更復雜的示例可能會起作用,它可能只是list(list(...))是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM