如何将环境变量传递给shinyapps

时间:2016-08-22 16:17:20

标签: r shiny

我想将安全参数传递给shinyapps.io部署,以便我的应用程序可以通过以下方式获取它们:

distdf1.apply(lambda x: haversine(x['SLongitude'], x['SLatitude'], x['ClosestLong'], x['ClosestLat']), axis=1)

我在Sys.getenv('PASSWORD_X')包中的deployApp函数中找不到任何内容。

1 个答案:

答案 0 :(得分:11)

您可以使用 Renviron.site .Renviron 将私有数据存储和访问闪亮的应用程序。 (see here for Hadley Wickham's recommendations and instructions - ref example below)。

解决方案:

存储API身份验证密钥/令牌(Attribution: Hadley Wickham

如果您的软件包支持基于API密钥或令牌的身份验证工作流,请鼓励用户将其存储在环境变量中。我们使用github R包来说明这一点,它包装了Github v3 API。将此模板定制到您的API +包并包含在README.md或插图中。

  1. 在个人访问令牌区域中创建个人访问令牌 您的GitHub个人设置。将令牌复制到剪贴板。
  2. 确定您的主目录。不确定?在R中输入normalizePath(“〜/”) 安慰。
  3. 创建新的文本文件。如果在RStudio中,请执行文件>新文件> 文本文件。
  4. 创建一个这样的行:

    GITHUB_PAT = blahblahblahblahblahblah

  5. 其中名称GITHUB_PAT会提醒您这是哪个API,blahblahblahblahblahblah是您的个人访问令牌,从剪贴板粘贴。

    1. 确保文件中的最后一行为空(如果不是R将无声地加载文件。如果您使用的是显示行号的编辑器,则应该有两行,其中第二个是空的。

    2. 使用文件名.Renviron保存在主目录中。如果被质疑, 是的,你确实想使用以点开头的文件名..

      • 请注意,默认情况下,dotfiles通常是隐藏的。但在RStudio中,文件浏览器将使.Renviron可见,因此将来很容易编辑。
    3. 重新启动R. .Renviron仅在R会话开始时处理。

    4. 使用Sys.getenv()访问您的令牌。例如,以下是如何将GITHUB_PAT与github包一起使用:

      library(github)
      ctx <- create.github.context(access_token = Sys.getenv("GITHUB_PAT"))
      # ... proceed to use other package functions to open issues, etc.
      
    5. 常见问题解答:为什么要通过.Renviron而不是.bash_profile或.bashrc来定义这个环境变量?

      因为有很多OS的组合和运行R的方式,其中.Renviron方法“正常工作”而bash的东西没有。当R是Emacs或RStudio的子进程时,你不能总是依赖于传递给R的环境变量。将它们放在一个特定于R的启动文件中并为自己省去一些悲伤。