我可以编写一个R脚本来打开并运行文件夹中的每个R文件吗?
我知道如何检查文件夹中是否存在文件,如何将文件夹中的每个文件作为文本连接读取以及如何读取文件夹中的每个数据文件.
但是,我希望一次一个地执行一个文件夹中的每个R脚本,理想情况下使用单个R脚本和安装期间安装在Windows桌面上的默认R gui.
我怀疑我可能需要从命令行运行R而是编写某种批处理文件来执行此操作.我很少从命令行运行R,也从未为R编写批处理文件.
以下是一些示例R脚本,它们都存储在名为的文件夹中run_all_these:
该文件run.one.r包含:
a <- 10
b <- 20
c <- a+b
c
Run Code Online (Sandbox Code Playgroud)
该文件run.two.r包含:
a <- 10
b <- 20
c <- a-b
c
Run Code Online (Sandbox Code Playgroud)
该文件run.three.r包含:
a <- 10
b <- 20
c <- a*b
c
Run Code Online (Sandbox Code Playgroud)
该文件run.four.r包含:
a <- 10
b <- 20
c <- a/b
c
Run Code Online (Sandbox Code Playgroud)
我使用谷歌几乎没有发现这个话题.虽然,我确实在这里找到了一些批处理文件:
http://cran.r-project.org/bin/windows/base/rw-FAQ.html
我的实际R脚本将在运行时各自创建自己的输出文件.所以,我现在主要关心的是运行R脚本.虽然下一步是打开每个R脚本,但是a从更改10为100并再次运行它们.也许这应该是一个后续职位.
谢谢你的任何建议.
编辑 2013年11月20日:
在与Ricardo Saporta讨论后,我将四个输入文件更改为:
档案run.one.r:
a <- 10
b <- 20
c <- a+b
print(c)
Run Code Online (Sandbox Code Playgroud)
档案run.two.r:
a <- 10
b <- 20
c <- a-b
print(c)
Run Code Online (Sandbox Code Playgroud)
档案run.three.r:
a <- 10
b <- 20
c <- a*b
print(c)
Run Code Online (Sandbox Code Playgroud)
档案run.four.r:
a <- 10
b <- 20
c <- a/b
print(c)
Run Code Online (Sandbox Code Playgroud)
我的utils文件中有以下函数:
## finds all .R files within a folder and soruces them
sourceEntireFolder <- function(folderName, verbose=FALSE, showWarnings=TRUE) {
files <- list.files(folderName, full.names=TRUE)
# Grab only R files
files <- files[ grepl("\\.[rR]$", files) ]
if (!length(files) && showWarnings)
warning("No R files in ", folderName)
for (f in files) {
if (verbose)
cat("sourcing: ", f, "\n")
## TODO: add caught whether error or not and return that
try(source(f, local=FALSE, echo=FALSE), silent=!verbose)
}
return(invisible(NULL))
}
Run Code Online (Sandbox Code Playgroud)