将数据写入闪亮应用程序的不同目录
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-user
的home
目录。将文件复制到/srv/shiny-server/app-dir
后即可更改文件的读取权限:
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闪亮不同的输出