将数据框保存在 Shiny 中以便以后访问并下载?

Posted

技术标签:

【中文标题】将数据框保存在 Shiny 中以便以后访问并下载?【英文标题】:Save dataframe in Shiny to access it later and download it? 【发布时间】:2018-06-01 10:05:45 【问题描述】:

我是闪亮的新手。 我有一个非常基本的问题,但我在 *** 上找不到解决方案。 我正在使用 wleepang (https://github.com/wleepang/shiny-directory-input) 创建的目录输入函数。 我写了一个函数read_filesrbind 所选目录中的所有文件。 我可以用 renderTable 显示这个表格,这很完美。但我无法保存此表以供以后使用(检查丢失的数据、添加列、绘制 ggplots ..)并且下载是使用 write.xlsx

ui <- fluidPage(
directoryInput('directory', label = 'select a directory'),
actionButton("upload", label="Hochladen"),
downloadButton("download", label="Runterladen")
)  

server <- function(input, output, session) 
#this part is to set the directory
 observeEvent(
 ignoreNULL = TRUE,
 eventExpr = 
   input$directory
 ,
 handlerExpr = 
   if (input$directory > 0) 
  path = choose.dir(default = readDirectoryInput(session, 'directory'))
  updateDirectoryInput(session, 'directory', value = path)
  )
#now comes the actual code

  observeEvent(input$upload,
 df <- read_files(readDirectoryInput(session, 'directory'))
)

我以后如何访问这个 df?

output$downloadData <- downloadHandler(
   filename = function()  
     paste('tabelle', '.csv', sep="") ,
   content = function(file) 
     write.xlsx(df, file)
   
 )

我的第二个问题是如何将它作为 xlsx 文件下载到 set 目录中?

我的 global.r 和 read_files 函数

source('directoryInput.R')
read_files = function(inDir, pat="*.csv", readMe=read.csv2)
files = list.files(inDir, pattern=pat)
files = lapply(files, function(x) file.path(inDir, x))
df = do.call(rbind, lapply(files, readMe))
return(df)

【问题讨论】:

1.您可以使用save将数据保存为R object,然后使用load读取数据,2.下载作为 xlxs 调查this @parth 我已经使用反应函数 upload_data &lt;- eventReactive(input$upload, read_files(readDirectoryInput(session, 'directory')) ) 保存了元素,并且可以通过 upload_data() 访问它,这对我有用 @parth save 在闪亮时不起作用,或者你能给我一个代码示例吗?谢谢 【参考方案1】:

我已经使用反应函数保存了元素

upload_data <- eventReactive(input$upload,       
read_files(readDirectoryInput(session, 'directory')) ) 

并且可以通过upload_data() 访问它,这对我有用

【讨论】:

以上是关于将数据框保存在 Shiny 中以便以后访问并下载?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存StorageFile以便以后使用?

您如何在两个不同的数据框中使名称相同以使 Shiny 应用程序正常工作?

如何在 Shiny 中使用 textInput 来命名上传数据框的列

在数据框中迭代并保存每个股票历史数据,而无需在 CSV 中下载

将工作保存为 xml 或其他文件以供以后访问

如何保存 numpy 数组以便以后可以适当地加载它们?