迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

使用源函数运行另一个 R 脚本

作者:迹忆客 最近更新:2023/03/21 浏览次数:

本文探讨如何使用 source() 函数运行位于相同或不同目录中的另一个 R 脚本。

我们将为我们的文件假设以下条件。

  1. 主脚本的路径被硬编码在包装脚本的 source() 函数调用中。
  2. 主脚本访问的资源在同一目录或其子目录下;路径必须相对于它。

R 中的 source 函数

我们可以使用 source() 函数让 R 解析和评估存储在 R 脚本中的代码。

chdir 参数可以临时将 R 的工作目录更改为传递给 source() 的脚本目录。

在 R 中使用主脚本的绝对路径

如果包装脚本中主脚本的路径是绝对路径,则它可以是文件系统中相对于包装脚本的任何位置。我们需要在 source() 函数中使用 chdir = TRUE 以使 R 能够找到主脚本所需的资源。

例如,使用带有以下代码的包装脚本。包装文件和主脚本可以在任何地方。

# Get and print the working directory.
print("The starting working directory was:")
print(getwd())

# Call and process the main script file.
source("/absolute/path/to/main/script/filename.R", chdir = TRUE)

print("Final working directory")
print(getwd())
  1. 在任意文件夹中打开一个终端窗口。
  2. 运行 R 命令获取 R 命令行(控制台)。
  3. 运行 getwd() 命令。

运行 R 命令的目录是当前工作目录。使用以下命令运行包装脚本,提供绝对路径。

source("/absolute/path/to/wrapper/script/filename.R")

R 将执行包装脚本中的代码。它会将工作目录临时更改为主脚本所在的目录。

它将执行主脚本,然后将工作目录更改回调用包装脚本的原始位置。

我们在调用包装脚本时没有使用 chdir = TRUE,因为主脚本与包装脚本不在同一个文件夹中。

在 R 中使用主脚本的相对路径

如果主脚本与包装脚本位于同一文件夹或子文件夹中,我们可以在包装脚本中使用主脚本的相对路径。

命令行中使用的 source() 函数首先让 R 使用 chdir = TRUE 将工作目录临时更改为包装脚本。

如果主脚本位于子文件夹中,则对包装脚本中的 source() 的调用再次使 R 临时将工作目录更改为主脚本的工作目录。

例如,使用包含以下代码的包装文件。

# Get and print the first temporary working directory.
print("The first temporary working directory is:")
print(getwd())

# Call and process the real file.
source("relative_path_from_wrapper_to_main_script/filename.R", chdir = TRUE)

print("Current temporary working directory")
print(getwd())

仅当主脚本位于包含包装脚本的文件夹的子文件夹中时,才需要参数 chdir = TRUE

在任意文件夹中打开 R,然后执行包装脚本,如下所示。

source("/absolute/path/to/wrapper/script/filename.R", chdir = TRUE)

现在,在命令行上调用包装脚本时需要 chdir = TRUE,因为我们想首先将工作目录更改为包装脚本的工作目录。

如果我们在与包装脚本相同的目录中打开 R,则不需要路径和 chdir

脚本完成执行后,运行 getwd() 命令以验证当前工作目录是否是运行 R 的目录。

结论

我们看到了如何结合 source() 函数和它的 chdir 参数从另一个包装脚本执行主 R 脚本。

主脚本的相对(甚至绝对)路径必须在包装脚本中硬编码。主脚本访问的资源应该和自己在同一个目录下或者在一个子目录下。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便