从另一个项目调用项目脚本

2024-05-06

我正在构建一个 RStudio 项目(项目 2),我想在其中访问另一个已构建的 RStudio 项目(项目 1)中包含的某些脚本。项目 1 包含各种脚本,其中一些脚本通过source()来电。有什么办法可以实现这一点吗?我最初认为在项目 1 中使用 here::here() 或 box::file() 可以促进这一点,但是我意识到这两个函数都将引用项目 2 的工作目录,而不是项目 1 的工作目录。

例如,假设项目 1 包含以下文件结构:

> list.files(withr::with_dir("./Project_1", getwd()))
 [1] "assumptions.R"          "launch.R"               "output.R"              
 [4] "project_env.R"          "renv"                   "renv.lock"             
 [7] "run_scenarios.R"        "Project_1.Rproj"        "sample_script_1.R"     
[10] "sample_script_2.R"      "selected_assumptions.R" 

Launch.R 是启动所有剩余脚本的代码的脚本(代码如下)。

Launch.R

source("assumptions.R")
source("project_env.R")
project_env$launch_mode = project_env$scenario_toggle$DEFAULT

source("assumptions.R")
source("selected_assumptions.R")
source("output.R")
source("run_scenarios.R") 

有没有办法从项目 1 外部执行 Launch.R 脚本?由于项目 1 的脚本捆绑在一起的方式,如果我尝试从项目外部的任何位置执行 Launch.R,当它尝试执行source("assumptions.R")命令。

任何帮助将非常感激。


To make box::file()返回当前脚本的目录路径而不是当前工作目录,您需要加载脚本作为一个模块。最基本的是,这意味着替换source来电 来电box::use。原因是‘盒子’提供了一个模块系统而不是单独的辅助函数;因此,box::file等等。假设它们是在模块的上下文中调用的。这“盒子”包装插图 https://klmr.me/box/articles/box.html提供了进一步的信息。

作为使用示例,使用“box”模块,您的Launch.R脚本如下所示:

box::use(
    ./assumptions[...],
    ./project_env[...],
    ./assumptions[...],
    ./selected_assumptions[...],
    ./output[...],
    ./run_scenarios[...],
)

Where:

  • 模块名称不带引号
  • ./…表示这是本地的,relative模块名称(而不是包或全局安装的模块,其搜索方式不同)
  • [...]意思是:附加模块内部定义的所有名称;默认情况下,“box”在加载模块时不附加导出。默认情况下不进行附加,因为通常不建议这样做。

另请注意,每个模块都有自己的作用域,就像 R 包一样。因此,声明project_env$launch_mode = project_env$scenario_toggle$DEFAULT对加载的模块没有影响。要使模块在调用代码中看到变量,您需要显式传递它们into该模块。

通过这些变化,box::file()在模块之一内调用将返回该模块目录的路径;和box::file('some_file')将返回绝对路径some_file嵌套在模块内部(同样,有关更多详细信息,请参阅上面链接的小插图)。

最后,执行Launch.R在您的项目之外,通过上述更改,您可以简单地运行例如Rscript path/to/Launch.R这会起作用的。或者,您也可以治疗Launch.R作为模块并通过加载它box::use。要从项目外部执行此操作,您需要配置‘box’搜索路径 https://klmr.me/box/reference/use.html#search-path通过box.path选项。之后,您可以通过以下方式使用该模块absoluteimport 指令(与之前的 local 相比,relative导入指令):

box::use(projectname/Launch)
  • projectname这里是包含您的文件夹的文件夹名称Launch.R脚本,以及box.path选项需要包含其路径父目录.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从另一个项目调用项目脚本 的相关文章

  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 实三次多项式的最快数值解?

    R 问题 寻找最快的方法来数值求解一堆已知具有实系数和三个实根的任意三次方程 据报道 R 中的 polyroot 函数对复杂多项式使用 Jenkins Traub 算法 419 但对于实多项式 作者参考了他们早期的工作 对于实三次或更一般的

随机推荐

  • 如何在 IntelliJ 中快速文档中换行文本?

    Ctrl Q 快速文档 后我看不到所有文本 我必须水平滚动才能看到所有内容 我无法使编辑器适合窗口 更新 问题只是符号定义 即 第一行 描述 块文本 正确换行 实际上 我不想调整此窗口的大小 因为我更喜欢将其保留在相同的位置以便快速参考 我
  • Android Market 公司注册

    抱歉 这个问题与编程无关 但我无处可问 我在 android 帮助中心和支持中询问 但没有任何回应 在 Android Market 开设公司帐户需要什么 我希望我的公司被视为卖家 他们将如何验证公司的身份 我需要向市场提供哪些文件 Tha
  • 如何在 Ruby 中获取网页的 HTML 源代码 [重复]

    这个问题在这里已经有答案了 在 Firefox 或 Safari 等浏览器中 打开网站后 我可以右键单击该页面 然后选择以下内容 查看页面源代码 或 查看源代码 这显示了该页面的 HTML 源代码 在 Ruby 中 是否有一个函数 也许是一
  • 自动生成序列号

    我编写了下面的计数代码 目的是让它为我的数据生成自动序列号 以代替删除行后的 MySQL 序列号 但是当我运行它时 我发现 MySQL 表中没有任何条目 后来我将代码更改为 Dreamweaver 插入记录 并观察到 SN 序列号 字段不需
  • 正则表达式 括号之间的匹配 (...)

    我正在尝试从一条简单的线中抓取 2 件物品 Title Description 编辑 实际上一个想要显示的网址称为描述 因为我希望它显示而不是实际解析 Trivium https www youtube com user trivium 在
  • 更改同一页面上的页面过渡

    我有一个带有两个内部页面 data role page 的html 其中一页显示日期以及与该日期相关的数据 当我向左或向右滑动时 日期应该会改变 我这里需要的是让页面过渡显示 看来我不能使用 mobile changePage 对于同一页面
  • printf 似乎忽略了字符串精度

    所以 我有点难受 根据man 3 printf在我的系统上 字符串格式 5s 应使用指定的精度来限制从给定字符串参数打印的字符数 man 3 printf PRINTF 3 BSD Library Functions Manual PRIN
  • ^ 和 _ 宏之后出现的数字(是:LaTeX 限制?)

    我在 LaTeX 中遇到了一个恼人的问题 我有一个大约 1000 行的 tex 文件 我已经有了一些数字 但是当我尝试添加另一个数字时 它会吐出 Undefined control sequence
  • 如何在Python中使用tcp套接字发送和接收网络摄像头流?

    我正在尝试重新创建这个项目 https github com hamuchiwa AutoRCCar 我拥有的是服务器 我的电脑 和客户端 我的树莓派 我所做的与原始项目不同的是我尝试使用一个简单的网络摄像头而不是树莓派摄像头将图像从我的
  • Scala 中的多个类型下限

    我注意到tuple productIterator总是返回一个Iterator Any 想知道是否无法设置多个下限 因此它可能是最低公共超类型的迭代器 我尝试并搜索了一下 但只发现this https stackoverflow com q
  • 如何修复 yaml 文件中的“此上下文中不允许映射值”错误?

    我浏览过类似的问题 并相信我已经应用了从答案中收集到的所有内容 我有一个 yml 文件 据我所知 每个元素的格式都相同 然而根据YamlLint com http www yamllint com
  • C# - “资源”DLL 无法加载,因为它不存在 - 我如何找到引用以便将其删除?

    我有一个 C 解决方案 它在编译时生成可执行二进制文件 该二进制文件依赖于一个库 该库是我编写的另一个解决方案的产品 所有相关代码都是我创建的 最近 我以相当随意的方式尝试了一些项目设置 试图了解 CLR 构建链接的工作原理 不幸的是 可以
  • Sense 手机上的 Android 应用程序主题

    我在有关感应手机上的应用程序的 UI 项目上遇到了障碍 我无法在谷歌或SO上制作搜索查询来找到我所追求的任何参考 有没有办法让我的应用程序主题的 UI 样式与手机当前应用的样式相匹配 我基本上追求不同 UI 小部件 复选框 微调器 按钮等
  • Python 中的 Flask 错误:“无法导入 webapp”

    我正在尝试运行 Flask 但是 每当我输入 flask run 时 都会出现错误 Could not import webapp 作为参考 我正在使用 Visual Studio Code 并运行以下代码 from flask impor
  • Laravel:将变量传递给多个视图

    我想动态地制作菜单 因此显示 本月电影 而不是 十二月电影 参见图片 十二月是每月更新的当前月份 我的问题是菜单不属于特定的路由 控制器 因此我无法像其他路由一样传递变量 例子 month Carbon now gt format F re
  • 选择容器中的最后一个单词

    我只是想知道是否有办法选择 DIV 中的最后一个单词 我认为没有任何明显的方法可以做到这一点 那么有什么解决方法吗 我不介意使用 CSS 或 Javascript 来实现这一点 提前致谢 div or no div 它归结为基本的字符串操作
  • 返回动态列集

    我创建了以下函数来根据该函数的参数返回列集 CREATE OR REPLACE FUNCTION getColumns IN column1 text IN column2 text IN column3 text IN column4 t
  • Zend,Application.ini 中的全局变量?

    我有一个问题 因为我需要一个全局静态变量 并且我有一个问题是否有可能将其添加到 application ini 文件中 该怎么做 或者我必须 使用静态变量创建抽象类 在 Zend Registry 中注册它 以便从所有应用程序访问该变量 在
  • 如何使用 R 从 github 存储库文件夹中获取列表文件

    我想知道是否存在一个函数或链接或任何可以像这样工作的方法list files R 中的函数 但位于存储在 github 存储库上的文件夹上 示例 github 存储库文件夹 https github com KZPS Spotkania t
  • 从另一个项目调用项目脚本

    我正在构建一个 RStudio 项目 项目 2 我想在其中访问另一个已构建的 RStudio 项目 项目 1 中包含的某些脚本 项目 1 包含各种脚本 其中一些脚本通过source 来电 有什么办法可以实现这一点吗 我最初认为在项目 1 中