将数据写入闪亮应用程序的不同目录

Posted

技术标签:

【中文标题】将数据写入闪亮应用程序的不同目录【英文标题】:Write data to different directory for shiny-app 【发布时间】:2018-01-31 10:16:32 【问题描述】:

我有一个在 Linux 上运行闪亮服务器的闪亮应用程序。按照我的设置,应用程序位于/srv/shiny-server/app-dir/

我想使用我放在一起的.R 文件将文件写入该目录以供我的闪亮应用程序读取。在那个文件中,我这样写数据:write.csv(df, "file.csv")。如果我从我的闪亮应用目录运行这个文件 Rscript /srv/shiny-server/app-dir/write_script.R,它将数据写入/home/ec2-user

如果我将write 命令更改为write.csv(df, '/srv/shiny-server/app-dir/data.csv') 并以同样的方式运行它不起作用(权限被拒绝)。

我也不能从我的闪亮应用程序中读取/home/ec2-user/ 中的文件。

所以我的问题是:考虑到上面概述的文件夹结构,我如何从 R 脚本(不是闪亮应用中的 server.R 文件)写入闪亮应用可以访问的文件?

【问题讨论】:

【参考方案1】:

Shiny Apps 由用户shiny 执行,该用户无权访问用户ec2-userhome 目录。将文件复制到/srv/shiny-server/app-dir后即可更改文件的读取权限:

使用 linux 命令:chmod a+r /srv/shiny-server/app-dir/file.csv 使用 R 命令:system2("chmod", list("a+r", "/srv/shiny-server/app-dir/file.csv")

【讨论】:

我认为我的问题不在于.csv 文件的权限,而是首先将文件放入/srv/shiny-server 目录。我不知道system2 函数,这在我编写.csv 以将文件移动到/srv/shiny-server 的脚本中是否有效?类似:system2("cp", list("/home/ec2-user/file.csv", "/srv/shiny-server/app-dir))。我可以将sudo 添加到system2 并让它工作吗?

以上是关于将数据写入闪亮应用程序的不同目录的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从闪亮的应用程序写入exce / csv文件?恰好我想将股票价格值的值写入excel / csv文件

如何结合两个闪亮的应用程序?

DT::datatable - 选择要删除的行并写入没有闪亮的 csv

renderTable和renderDataTable之间的R闪亮不同的输出

R闪亮:observeEvent和eventReactive的不同行为

闪亮的DT编辑保存在错误的列中