R 在服务器上存储文件,运行闪亮的应用程序,这是一种好的做法吗?

R 在服务器上存储文件,运行闪亮的应用程序,这是一种好的做法吗?,r,shiny,R,Shiny,我有一个闪亮的应用程序在服务器上运行 要预处理数据,我正在使用系统unix工具,例如: for (file in 1:length(files)){ foon <- paste("data/",files[file],".txt",sep="") if(.Platform$OS.type == "unix") { system(paste("sed 's/\t/,/g' ", foon," | tail -n +2 > file",file,

我有一个闪亮的应用程序在服务器上运行
要预处理数据,我正在使用系统unix工具,例如:

for (file in 1:length(files)){
    foon <- paste("data/",files[file],".txt",sep="")        
if(.Platform$OS.type == "unix") {
        system(paste("sed 's/\t/,/g' ", foon," | tail -n +2 > file",file, ".txt"))  
        }
       else {
        shell(paste("sed 's/\t/,/g' ", foon," | tail -n +2 > file",file,".txt", sep=""))  
      }
for(1中的文件:长度(文件)){

foon如果您拥有自己的服务器,并且您在其上运行的是Shiny server,那么在其上运行文件是绝对好的。如果您在shinyapps.io上运行应用程序,那么这不是一个好主意,因为它(目前)没有有持久的文件存储,但在您自己的服务器上,您可以以任何方式访问文件。

我通常首先将文件放在tmp上。这种情况下,用户可以从闪亮的应用程序输入文件。这是因为在web应用程序中,大多数情况下,用户可能没有对/tmp以外的任何内容的读/写权限。这也有帮助重新计算和动态处理可以在不需要重新加载用户输入文件的情况下工作。要做到这一点,您只需在ubuntu上执行file.copy到tmpdir即可

我确实遇到过这样的情况,即这些保存的文件会被缓存。为了处理这个问题,我会在应用程序中设置一个“刷新”按钮,当单击该按钮时,会删除tmpdir上所有保存的文件


另一方面,如果这些文件是应用程序中静态处理所需的文件(例如,元文件或某些参考固定数据),然后你可以将文件放在与应用程序代码文件相同的目录中。

不要获取
if
语句。如果你的应用程序运行在Ubuntu服务器上,你知道这一点,那么检查
OS.type
有什么意义?@nicola本地我在windows机器上工作,所以我不必有两个不同的代码,我就是这样做的我仍然感到困惑。如果该代码是
server.R
的一部分,则这些命令由服务器(承载应用程序的PC)执行,而不是由客户端(连接到应用程序的PC)执行.对于本地,您的意思是在Windows机器上开发应用程序,然后在Ubuntu服务器上传输它吗?或者您只是在连接Windows PC?在第二种情况下,
如果
条件无效。但是,我认为使用操作系统命令不是一个好的做法。我不熟悉
sed
,b但是,如果你解释你想做什么,肯定会有一个R方法来做。1.我在windows机器上开发,然后通过github推送到服务器上。2.我确信有一种方法可以用R来做,但有些任务R不擅长,比如预处理数据,这就是为什么我想知道为什么这个不好的实践者完全是摇滚乐它擅长处理数据,可以轻松快速地完成从制表符到逗号的转换。