我使用reactiveFileReader
加载数据,并想提取诸如列名之类的值以在tableHeader
函数中使用它。但是,我不理解如何不通过render*
函数就如何独自使用数据。有人可以协助吗?
reactive_api_data <- reactiveFileReader(
intervalMillis = 1000,
session = session,
filePath = "data/data.csv",
readFunc = read_csv
)
sketch <- htmltools::withTags(table(
tableHeader(c("date", "a", "b", "c", "d", "e", "f", "g")),
tableFooter(c("Total",0,0,0,0,0,0,0))
))
output$data_2019 <- DT::renderDataTable({
reactive_api_data() %>%
filter(date > "2019-01-01")
},
container = sketch,
rownames = FALSE,
options = list(paging = FALSE, searching = FALSE, lengthMenu = FALSE,
footerCallback = JS(
"function(row, data, start, end, display) {",
"var api = this.api(), data;",
"total = api.column(2).data().reduce( function(a, b) { return a + b }, 0);",
"$( api.column(2).footer() ).html(total);",
"}"
)
)
我想做类似的事情
tableHeader(colnames(data))
而不是像上面的代码中那样手动键入列名称:
tableHeader(c("date", "a", "b", "c", "d", "e", "f", "g"))
答案 0 :(得分:0)
我将sketch
更改为一个反应函数,以在renderDataTable内部调用。
reactive_api_data <- reactiveFileReader(
intervalMillis = 1000,
session = session,
filePath = "data/data.csv",
readFunc = read_csv
)
sketch <- reactive({
htmltools::withTags(
table(
DT::tableHeader(colnames(reactive_api_data())),
DT::tableFooter(c("Total",0,0,0,0,0,0,0))
)
)
})
output$data_2019 <- DT::renderDataTable({
reactive_api_data() %>%
filter(date > "2019-01-01")
},
container = sketch(),
rownames = FALSE,
options = list(paging = FALSE, searching = FALSE, lengthMenu = FALSE,
footerCallback = JS(
"function(row, data, start, end, display) {",
"var api = this.api(), data;",
"total = api.column(2).data().reduce( function(a, b) { return a + b }, 0);",
"$( api.column(2).footer() ).html(total);",
"}"
)
)