如何在使用闪亮下载处理程序下载的表格上插入一排文本?
所选的解决方案添加到此操作的结尾
在以下缩短的可重复的代码中,用户可以通过单击UI顶部的 doconal> download> docoldub> downloadbutton()
来下载输出数据框。当将其下载为CSV文件时,如何插入表上方的一排文本?如图像所示。
可重复的代码:
library(dplyr)
library(DT)
library(shiny)
library(shinyWidgets)
library(tidyverse)
ui <-
fluidPage(fluidRow(
column(width = 8,
h3("Click below to download:"),
downloadButton("sumsDownload","Download",style = "width:20%;"),
h3("Summed Data:"),
DT::dataTableOutput("sums")
)
))
server <- function(input, output, session) {
data <- reactive({
data.frame(
Period = c("2020-01", "2020-02", "2020-03", "2020-01", "2020-02", "2020-03"),
ColA = c(1000.01, 20, 30, 40, 50, 60),
ColB = c(15.06, 25, 35, 45, 55, 65)
)
})
summed_data <- reactive({
data() %>%
group_by(!!sym("Period")) %>%
select("ColA", "ColB") %>% summarise(across(everything(), sum))
})
output$sums <- renderDT({datatable(data = summed_data(),rownames = FALSE)})
output$sumsDownload <- downloadHandler(
filename = function() {paste("sumsDownload","csv",sep=".")},
content = function(file) {write.csv(summed_data(), file,row.names=FALSE)}
)
}
shinyApp(ui, server)
选择的解决方案:
创建一个反应性dataframe df
,将 sumpsed_data()
dataframe合并与向量(放置在 df
dataframe的顶部),带有“求和数据”的表名称,然后在该行中进行一系列NA,然后在 download> download> download> downloadhandler()。
下载
下面还从OP上修订,用 write.csv()
用 write.table()
。
df <- reactive({ # `df` modifies `summed_data` for csv download
as.data.frame(
rbind(
c("Summed Data",rep(NA,ncol(summed_data())-1)),
colnames(summed_data()),
matrix(unlist(summed_data(), use.names=FALSE),
nrow = nrow(summed_data()),
)
)
)
})
output$sumsDownload <- downloadHandler(
filename = function() {paste("sumsDownload","csv",sep=".")},
content = function(file){
write.table(
df(),
na = "",
file,
sep = ",", # add this per road_to_quantdom on May/05/22
col.names = FALSE,
row.names = FALSE)
}
)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在附加模式下打开输出文件,编写标题行,然后写入
CSV数据:
Open the output file in append mode, write the header line, and then write
the CSV data: