【问题标题】:Plumber API calling multiple source filesPlumber API 调用多个源文件
【发布时间】:2022-07-23 03:30:10
【问题描述】:

我正在尝试根据输入的数据设置一个 API 来获取 R 中的多个脚本

#* @post /test
function(req) {
  source("R Scripts/packages.r")
  ###############
  source("R Scripts/functions.r")
  ###############
  source("R Scripts/selection.r")
  ###############
  source("R Scripts/calculation.r")
  ###############
  source("R Scripts/graphing.r")
}

最终目标是让我网站上的某个人输入一个传递给 R 的名称,读取所有包、函数,读取一些按输入名称过滤掉的数据,保存该数据,计算一些值过滤后的数据,然后绘制计算图。

我在上面设置它的方式在source("R Scripts/selection.r") 部分中产生了一个问题,因为我想在这里传递我选择的名称,但我收到以下错误eval(ei, envir): object 'req' not found>

如果我写source("R Scripts/selection.r", req),我会收到新的错误 data <- fread("name.csv"): could not find function "<-"> 表示我之前的包还没有被读取。

如果我尝试读取该特定脚本中的包,我会收到此错误library(tidyverse): could not find function "library">。

我有点不知所措。

任何帮助将不胜感激。

【问题讨论】:

    标签: r plumber


    【解决方案1】:

    好消息,

    我设法弄明白了!为了解决环境问题,您只需将(.., local = TRUE) 添加到源命令。使用上面的案例,

     #* @post /test
    function(req) {
      source("R Scripts/packages.r", local = TRUE)
      ###############
      source("R Scripts/functions.r", local = TRUE)
      ###############
      source("R Scripts/selection.r", local = TRUE)
      ###############
      source("R Scripts/calculation.r", local = TRUE)
      ###############
      source("R Scripts/graphing.r", local = TRUE)
    }
    

    这样做的原因是,plumbr 创建了自己的与 .GlobalEnv 不关联(?)的环境。当我们指定(.., local = TRUE) 时,源命令确定表达式应该在调用源的环境中进行计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多