从另一个脚本组合并运行多个R脚本

Kri*_*ris 15 r organization rstudio

基本上,我在R中构建了一个相当大的预测模型,其中包含大约10~15个单独的脚本文件,用于收集,排序,分析和显示我的数据.我想保持一定程度的模块化,并从控制脚本或某种可比较的控制机制运行每个部分,而不是像以前在matlab中所做的那样.这可能在R?

我已经读过这个帖子以及它的相关主题,但是找不到这个确切的答案. 组织R源代码

And*_*rau 14

我想你只是在找source功能.见?source.我通常有一个主脚本,source其他.R文件.


Aja*_*y B 9

我是一名新开发人员,我正在用一个对我有用的例子来回答,因为没有人给出过例子。使用 source("myscript.R") 调用另一个 R 脚本 "myscript_A.R" 或 "myscript_B.R" 的示例如下-

if(condition==X){
    source("myscript_A.R")
}else{
    source("myscript_B.R")
}
Run Code Online (Sandbox Code Playgroud)


Art*_*Yip 9

我已经完成了您所描述的操作,并将代码块分割在单独的 R 文件中,并一直在运行 source(this) 和 source(that),但我一直在痛苦地学习源函数(而不是子例程/脚本文件)是更好的方法。

以下是我们以这种方式开发脚本并坚持使用的 3 个可能原因,以及切换到函数有意义的 3 个原因:

  1. 我们希望在脚本出错时直接进行调试(能够在单个全局环境中跟踪所有变量及其状态)。
  • 我现在意识到 RStudio 的调试器/回溯是进行真正调试的更好方法。

2a)我们不知道以后需要保留哪些变量(不想跟踪哪些变量要放入函数中以及哪些变量要从函数中输出)

  • 函数帮助我们明确脚本的某个部分使用了什么、不使用什么,以及脚本的某个部分需要保留什么,因为没有必要输出脚本的每一部分。变量最好只保存在需要的环境中,而不是传入和传出全局环境的所有内容。
  • 另外,我认为环境可以充当列表,所以我认为可以将整个环境放入函数中并取出?需要更多地阅读/学习这方面的知识。

2b)我们对所有事物都有大量变量(参数/变量、设置、数据的不同部分),因此将所有内容都塞进函数中和塞出函数是不切实际的。

  • 使用列表等结构,我们可以将变量类别集中在一起并将它们发送到函数中。函数还可以返回列表(而不是变量)。

相关问题解答:

欢迎其他人的评论!


Wil*_*iam 7

.R您可以从文件夹中获取所有脚本:

# Load tidyverse
library(tidyverse) # to pipe (%>%) and map across each file

# List files and source each
list.files("path_to_folder", full.names = TRUE) %>% map(source)
Run Code Online (Sandbox Code Playgroud)

在这里,您列出文件夹中的所有文件,然后映射该source()函数。

如果每个脚本都包含一些函数,并且您希望在master_script.