是否可以在不下载的情况下将数据写入.csv?有一个downloadButton和downloadHandler,但是他们先写数据然后下载。
如果第一件事是可能的,是否有可能将数据写入csv并覆盖。例如,我有一个带值的.csv文件,我想更改该csv中的值,只是覆盖它们。
我的想法是,我想在启动时加载的.csv中存储一些值。即使用户想要更改其中一些并保存以供下次使用,因此我需要更改它们。下次加载更改后的值。
主意
问题是我希望允许用户选择某些选项,而闪亮的应用程序应该记住下一个应用程序上的选项会启动。首先,我的想法只是在启动app:时创建一个空变量savedItems<-NULL
。在托管应用程序的所有时间中,我都会添加类似这样的项目savedItems<<-c(savedItems,'a1','a3','a5')
。但是,有时我将在其上托管的服务器将重新启动,因此savedItems
将再次初始化为空向量。因此,我决定更新自己的想法,并将值不保存在矢量中,而是保存在文件中。
更新的想法和解决方案
首先,我初始化了一个空的.csv文件,例如upload.csv
,我要存储数据的位置。我想在每次启动应用程序(而不是主机)时都读取此文件,因此,首先我只读取了.csv,它将仅将列向量保存在文件中:
shinyServer(function(input, output, session) { uselessRead <- read.table("upload.csv",header=FALSE) useless <<- as.vector(uselessRead[,1]) ...
然后,使用selectInput
我选择一些项目并将其添加到我的vector中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
vector的所有内容。
在下次启动时,我的应用程序将首先读取,upload.csv
因此应用程序应选择哪些值,而用户不必每次都这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句