使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列
Posted
技术标签:
【中文标题】使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列【英文标题】:When using rhandsontable how do I stop hot_to_r adding a column on download 【发布时间】:2021-09-09 01:51:21 【问题描述】:我正在尝试编写一个简单的闪亮应用程序来上传 .csv 文件,对其进行编辑然后下载。我几乎在那里只有下载的文件有一个额外的行号列。关于我如何抑制这种情况的任何建议?
这是我的代码:
library(rhandsontable)
library(shiny)
ui <- fluidPage(
fluidPage(
titlePanel("Upload, edit and save a csv file"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
downloadButton('downloadData', 'Download')
),
mainPanel(
rHandsontableOutput("hot")
)
)
)
)
server <- function(input, output, session)
getData <- reactive(
req(input$file1) # Don't run any more code until the user has selected this
inFile <- input$file1
read.csv(inFile$datapath, header=T)
)
output$hot = renderRHandsontable(
req(input$file1) # Don't run any more code until the user has selected this
if (!is.null(input$hot))
rhandsontable(hot_to_r(input$hot))
else
rhandsontable(getData())
)
output$downloadData <- downloadHandler(
filename = function()
paste("data-", Sys.Date(), ".csv", sep="")
,
content = function(file)
write.csv(hot_to_r(input$hot), file)
)
# Run the application
shinyApp(ui = ui, server = server)
【问题讨论】:
【参考方案1】:我们可以使用readr::write_csv()
来避免额外的列,或者使用write.csv(hot_to_r(input$hot), file, row.names = FALSE)
将row.names 参数设置为FALSE。
output$downloadData <- downloadHandler(
filename = function()
paste("data-", Sys.Date(), ".csv", sep="")
,
content = function(file)
readr::write_csv(hot_to_r(input$hot), file)
)
【讨论】:
以上是关于使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列的主要内容,如果未能解决你的问题,请参考以下文章
如何将 'afterColumnResize' 事件与 'rhandsontable' 一起使用?
如何在 Shiny 的 rhandsontable 单元格中嵌入模态
如何让 rhandsontable 对输入值的变化和自身的变化做出反应?
在 R Shiny 中,如何使用 actionButton 重置 rhandsontable 中的数据(反转所有手动输入)?