使用相同数据的多个Shiny应用程序

cho*_*tom 2 r shiny

我想开发一堆Shiny应用程序,每个应用程序都在处理(和编辑)同一组数据.这是可行的,如果是的话,项目应该如何构建?

1闪亮的应用程序

我用来构建我的闪亮应用程序的方式如下:
在此输入图像描述

2个闪亮的应用程序

有没有办法引用数据的另一个位置,或以这种方式在根文件夹中存储应用程序:

在此输入图像描述,

每个应用程序使用位于数据文件夹中的数据.对于每个应用程序,ui.R,server.R和global.R存储在"app_i"文件夹中.

据我所知,ui.R,server.R和global.R应始终位于项目的根目录,这使得无法在同一数据集上使用多个应用程序.

提前感谢您对此的看法,并分享最佳实践.

问候

zer*_*323 7

ui.R,server.R并且global.R 必须位于应用程序的根目录中,但其中任何一个都可以访问根目录之外的文件.你在这里几乎没有选择:

  • 访问文件时使用数据目录的绝对路径

    DATA_PATH <- "/path/to/data/"
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用相对路径

    DATA_PATH <- file.path(getwd(), "../data/")
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用符号链接

    .
    ??? app1
    ?   ??? data -> /path/to/data
    ?   ??? server.R
    ?   ??? ui.R
    ??? app2
    ?   ??? data -> /path/to/data
    ?   ??? server.R
    ?   ??? ui.R
    ??? app3
    ?   ??? data -> /path/to/data
    ?   ??? server.R
    ?   ??? ui.R
    ??? data
        ??? bar.csv
        ??? foo.csv
    
    Run Code Online (Sandbox Code Playgroud)
  • 对于只读数据集,您可以使用标准R工具创建仅数据包

  • 如果必须由多个应用程序以安全的方式写入数据,请使用数据库作为后端.它可以是基于文件的解决方案,如SQLite或适当的服务器.
  • 使用轻量级Web服务来获取/更新您的数据