Database R数据库管理

Database R数据库管理,database,r,rstudio,shiny,Database,R,Rstudio,Shiny,我有一个RStudio闪亮应用程序,它将用户数据保存在我闪亮应用程序所在的子目录中。存储数据和访问数据的最佳方法是什么 代码的相关部分如下所示: # Save all answers after click on "submit" observe({ if(is.null(input$submit) || input$submit == 0) {return()} filename <- paste0("/data/answers-",input$userName, "-", as

我有一个RStudio闪亮应用程序,它将用户数据保存在我闪亮应用程序所在的子目录中。存储数据和访问数据的最佳方法是什么

代码的相关部分如下所示:

# Save all answers after click on "submit"
observe({
  if(is.null(input$submit) || input$submit == 0) {return()}
  filename <- paste0("/data/answers-",input$userName, "-", as.numeric(Sys.time()), ".RData")
  save(values$A, file = filename, compress = "xz")
})
"What do you think about this?","Excellent","Excellent"
"What do you think about that?","Excellent","Excellent"
"User Unique ID","ABC123","DEF456"
除了有更多的行和列

一种方法是定期从服务器下载数据,并在数据超过临界大小时在服务器上删除数据(以防止数据占用太多空间)。如何最好地做到这一点

欢迎提供有关数据库管理的任何提示

我在Shinny Discussion交叉发帖,我的问题尚未引起任何反应:


对不起。注释中的字符太多,这是一个更大的框。如果您想将数据附加到文件(例如,csv)中,该文件将按我提供的链接中的每行进行。所以,在发送到文件之前,您应该对数据进行t()处理。要让脚本以固定的时间间隔运行,请搜索R和Cron(适用于mac和/或linux)。在你闪亮的应用程序中,使用它可能更容易做到这一点。例如,设置一个每小时运行一次的观察者。如果文件大于X(使用file.info(“myfile.csv”)$size),则执行某些操作(例如,如果服务器上安装了dropbox,则使用将其移动到dropbox帐户中),或者发送电子邮件。我没有使用带R的电子邮件,但看起来很有希望


总之:尝试一些东西,如果您遇到问题,请告诉我们:)

您能举例说明一个用户的输出可能是什么样的吗?我不会保存到单独的文件。附加到txt或csv文件或存储在数据库中。这些问题/答案可能会很有帮助。@Vincent,谢谢你的建议,让我编辑问题并澄清:-)在专栏中做事情似乎不寻常。为什么不为ID、问题1和问题2设置一个CSV列,然后每一行都是一个用户及其回答?这将允许更轻松的更新,新数据可以添加到CSV的末尾。@PatrickT您在我之前的评论(单击“1”)中看到关于数据库的SO帖子的链接了吗?这应该会有帮助。我不确定如何按列追加。通常的追加是按行进行的,每次用户提交时都会发生(请参阅我前面评论中的链接2)。shujaa和我似乎同意:)每次应用程序保存到文件时,你可以添加file.info(“myfile.csv”)$大小,如果超过某个大小,请向你发送电子邮件或将文件发送给你或其他什么东西,然后删除该文件。@PatrickT在我看这个之前,我想知道你为什么要使用Shining?对于基本调查,有更简单/更好的选项,如谷歌表单、survey monkey、qualtrics,甚至django(我使用的是)。仅供参考运行gist时出现以下错误(Shiny.8.0.99):read.table中出现警告(file=file,header=header,sep=sep,quote=quote),readTableHeader在takeSingleton中的'survey.csv'错误(result,shinysession$singleton,desingleton=FALSE):参数“shinysession”缺少,没有默认值非常感谢您的建议。正如我在前面的评论中所写的,我有运行保存的一面,我的问题是处理保存的文件。我非常感兴趣您的建议,即每小时或每次文件超过一定大小时都要有一个观察者副本,您有用于此的示例代码吗?我不使用dropbox,但如果你认为这是一种方式,我会的。这听起来比电子邮件更聪明,不是吗?让我用我的完整代码发布一个指向要点的链接,这样我们就不会互相推诿。我会在我的问题下面发布。谢谢!不久前我收到一个建议,建议使用数据库表而不是csv,这就是为什么我在m中提到了
数据库管理
我有一个问题,但我以前没做过,所以我没试过。参考
https://groups.google.com/forum/#!topic/shinny discussion/jnYTe0rHbqI
每24小时将是:
invalidaterater(86400000,会话)
单位是毫秒…这是个大数字…嗨@PatrickT&Vincent,函数
reactiveFileReader
reactiveTimer
可能会有帮助