下载编辑后的数据 table 在闪亮的应用程序中发出警告
download edited data table gives warning in shiny app
这是一个允许用户下载 editable table 的 shiny 应用程序示例。用户可以点击左上角的csv
按钮下载table。
但是,我发现在编辑table中的任何单元格后(通过双击任何单元格并修改内容),当我点击csv
按钮时,输入文件名并保存,我收到如下警告消息:
dataTables warning: table id=DataTables_Table_3 - invalid json response.
For more information about this error, please see http://datatables.net/tn/1
虽然我仍然能够将 table 保存为 csv 文件,但警告消息非常烦人。
这只会在我在 renderDT
函数中添加参数 server=FALSE
后发生。我需要 server=FALSE
的原因是没有这个,应用程序只下载文件夹的第一页(保存后丢失所有其余数据)。
另一个问题是在我编辑单元格后,如果我 check/uncheck 某些列,编辑后的单元格会恢复到其原始值。
有谁知道如何解决这些问题?
非常感谢。
Shiny 应用示例如下:
library(shiny)
library(DT)
library(dplyr)
shinyApp(
# UI
ui = fluidPage(DT::dataTableOutput('tbl'),
checkboxGroupInput('datacols',
label='Select Columns:',
choices= c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
selected = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
inline=TRUE )
),
# SERVER
server = function(input, output) {
df = reactiveValues()
observe ({
df$dat = iris %>% select(one_of(input$datacols))
})
# render DT
output$tbl = renderDT(server=FALSE, {
datatable(df$dat,
editable = "cell",
extensions = "Buttons",
options = list(
dom = "Bfrtip", buttons = list("csv")))
})
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
}
)
那是因为您使用 server = FALSE
的代理。你不应该。做
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]])
})
而不是
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
如果要下载 server = TRUE
的整个 table,请参阅 this discussion。
这是一个允许用户下载 editable table 的 shiny 应用程序示例。用户可以点击左上角的csv
按钮下载table。
但是,我发现在编辑table中的任何单元格后(通过双击任何单元格并修改内容),当我点击csv
按钮时,输入文件名并保存,我收到如下警告消息:
dataTables warning: table id=DataTables_Table_3 - invalid json response.
For more information about this error, please see http://datatables.net/tn/1
虽然我仍然能够将 table 保存为 csv 文件,但警告消息非常烦人。
这只会在我在 renderDT
函数中添加参数 server=FALSE
后发生。我需要 server=FALSE
的原因是没有这个,应用程序只下载文件夹的第一页(保存后丢失所有其余数据)。
另一个问题是在我编辑单元格后,如果我 check/uncheck 某些列,编辑后的单元格会恢复到其原始值。
有谁知道如何解决这些问题?
非常感谢。
Shiny 应用示例如下:
library(shiny)
library(DT)
library(dplyr)
shinyApp(
# UI
ui = fluidPage(DT::dataTableOutput('tbl'),
checkboxGroupInput('datacols',
label='Select Columns:',
choices= c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
selected = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
inline=TRUE )
),
# SERVER
server = function(input, output) {
df = reactiveValues()
observe ({
df$dat = iris %>% select(one_of(input$datacols))
})
# render DT
output$tbl = renderDT(server=FALSE, {
datatable(df$dat,
editable = "cell",
extensions = "Buttons",
options = list(
dom = "Bfrtip", buttons = list("csv")))
})
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
}
)
那是因为您使用 server = FALSE
的代理。你不应该。做
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]])
})
而不是
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]], "tbl")
})
如果要下载 server = TRUE
的整个 table,请参阅 this discussion。