[英]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.