写入和覆盖数据到文件(.csv)

时间:2014-03-14 15:23:56

标签: r shiny

是否可以将数据写入.csv而无需下载?有一个downloadButton和downloadHandler,但是他们会写入数据然后下载它。

如果可以做到第一件事,是否可以将数据写入csv并覆盖。例如,我有一个带有值的.csv文件,我想更改csv中的值只是覆盖它们。

我的想法是,我想在启动时加载的.csv中存储一些值。即使用户想要更改其中一些并保存下次,因此我需要更改它们。下次加载更改后的值。

谢谢,

亚当

1 个答案:

答案 0 :(得分:1)

<强>观

问题是我希望允许用户选择一些选项,闪亮的应用程序应该记住下一个应用程序启动时的选项。首先,我的想法是在app savedItems<-NULL的启动时创建空变量。应用程序托管的所有时间,我都会添加这样的项目savedItems<<-c(savedItems,'a1','a3','a5')。但是,有时我将托管的服务器将重新启动,因此savedItems将再次初始化为空向量。因此,我决定更新我的想法并保存值不在矢量中,而是保存在文件中。

更新了理念&amp;溶液

首先,我初始化了空的.csv文件,例如upload.csv,我想存储数据。我想在每次启动应用程序(而不是主机)时读取此文件,因此首先我只读取我的.csv,它只会在文件中保存列向量:

shinyServer(function(input, output, session) { uselessRead <- read.table("upload.csv",header=FALSE) useless <<- as.vector(uselessRead[,1]) ...

然后,使用selectInput我选择一些项目并将其添加到我的向量useless。我点击actionButton("addUseless",...)后执行此操作: observe({ if (input$addUseless == 0) return () } isolate({ useless<<-input$uselessItems # from selectInput("uselessItems",...) }) }) 在此之后,我的矢量被新选择的值覆盖(如果已填充)。所以,我希望这些值显示在我的upload.csv中。所以我点击actionButton("upload",...)后执行此操作: observe({ if (input$upload == 0) { return () } isolate ({ write.table(useless,"upload.csv", col.names=FALSE,row.names=FALSE) }) })

这将写入(并覆盖内部的所有内容)所有内容,分配给useless向量的内容。

在下次启动时,我的应用程序将首先阅读upload.csv所以应用程序应选择哪些值,用户不必每次都这样做。