データテーブルのフッターに合計を追加しようとしています。さまざまなソースからのコードを使用して、Shinyを使用して次のアプリケーションを作成しました。DT :: datatableに合計を追加する方法
"処理中..."
を、永遠にそこにとどまる:問題は、私はそれを実行すると、以下のメッセージが表示されます、です。
私の推測はJS()コードですが、それをデバッグすることはできません。
library(shiny)
library(DT)
library(htmltools)
ui <- fluidPage(
fluidRow(
column(9, DT::dataTableOutput('withtotal'))
)
)
server <- function(input, output, session) {
# server-side processing
mtcars2 = mtcars[, 1:8]
#sketch <- htmltools::withTags(table(tableHeader(mtcars2), tableFooter(mtcars2)))
sketch = htmltools::withTags(table(tableFooter(c("",0,0,0,0,0,0,0))))
opts <- list(footerCallback = JS("function (row, data, start, end, display) {",
"var api = this.api();",
"var intVal = function (i) {",
"return typeof i === 'string' ?",
"i.replace(/[\\$,]/g, '')*1 :",
"typeof i === 'number' ?",
"i : 0;",
"};",
"if (api.column(COLNUMBER).data().length){",
"var total = api",
".column(COLNUMBER)",
".data()",
".reduce(function (a, b) {",
"return intVal(a) + intVal(b);",
"}) }",
"else{ total = 0};",
"if (api.column(COLNUMBER).data().length){",
"var pageTotal = api",
".column(COLNUMBER, { page: 'current'})",
".data()",
".reduce(function (a, b) {",
" return intVal(a) + intVal(b);",
"}) }",
"else{ pageTotal = 0};",
"$(api.column(COLNUMBER).footer()).html(",
"'$'+pageTotal",
");",
"}"))
output$withtotal = DT::renderDataTable(DT::datatable(mtcars2,container = sketch, options = opts))
}
options(shiny.error = browser)
# Run the application
shinyApp(ui = ui, server = server)
あなたは[this](http://stackoverflow.com/a/42803610/5894457)のリンクを見ましたか? – SBista
この投稿にコメントしてくれていない皆様ありがとうございます。http://stackoverflow.com/questions/42933859、私はTumbleweed賞を受賞しました:)この質問があまりにもスマートであるか、 – MPaydar