基本上,我在R中构建了一个相当大的预测模型,其中包含大约10~15个单独的脚本文件,用于收集,排序,分析和显示我的数据。我想保持一定程度的模块化,并从控制脚本或某种可比较的控制机制运行每个部分,而不是像以前在matlab中所做的那样。这可能在R?
我已经读过这个帖子以及它的相关主题,但是找不到这个确切的答案。 Organizing R Source Code
答案 0 :(得分:13)
我认为你只是在寻找source
功能。见?source
。我通常有一个主脚本source
其他.R
个文件。
答案 1 :(得分:1)
我是一名新开发人员,我在回答一个对我有用的示例,因为没有人提供示例。使用source(“ myscript.R”)来调用另一个R脚本“ myscript_A.R”或“ myscript_B.R”的示例如下-
if(condition==X){
source("myscript_A.R")
}else{
source("myscript_B.R")
}
答案 2 :(得分:1)
我已经完成了您所描述的工作,并在单独的R文件中拆分了代码块,并一直在运行source(this)和source(that),但是我一直在痛苦地学习该源函数(而不是子例程/脚本)文件)是更好的选择。
以下是我们可能以这种方式开发并坚持使用脚本的3个可能原因,以及切换到函数才有意义的3个原因:
1)我们想在脚本出错时直接进行调试(能够在单个全局环境中跟踪所有变量及其状态)。
2a)我们不知道以后需要保留哪些变量(不想跟踪将哪些变量放入函数中以及从函数输出哪些变量)
2b)对于所有内容(参数/变量,设置,数据的不同部分),我们都有大量的变量,因此将所有内容填充到功能中和填充功能是不切实际的。
相关SO:
答案 3 :(得分:0)
虽然我理解您对模块化的需求,但为什么不简单地为感兴趣的运行创建一个脚本。除非您写入文件(浪费CPU周期),否则采用多个脚本会导致无法跨脚本传递变量的复杂性。您甚至可以构建一个主脚本,该脚本将读取每个脚本的文本内容,然后创建主脚本,然后运行该脚本。
答案 4 :(得分:0)
您可以从文件夹中获取所有 .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)
在这里,您列出文件夹中的所有文件,然后映射 source()
函数。
如果每个脚本都包含一些函数,并且您希望在 master_script
中使用这些函数,则此解决方案更有用。