场合
我编写了一个R程序,为了保持良好的代码结构,我将其拆分为多个R文件。 有一个Main.R文件,它使用'source()'命令引用所有其他R文件,如下所示:
source(paste(getwd(), dirname1, 'otherfile1.R', sep="/"))
source(paste(getwd(), dirname3, 'otherfile2.R', sep="/"))
...
如您所见,工作目录需要提前正确设置,否则可能会出错。 现在,如果我想与其他人共享这个R程序,我必须以相对的顺序传递所有R文件和文件夹,以便工作。因此,我的下一个问题。
问题
有没有办法用所引用的实际R脚本代码替换所有'source'命令?这样,我有一个SINGLE R脚本文件,我可以简单地传递,而不必担心设置工作目录。
我不是在寻找一个'R包'的解决方案(顺便说一句是一个目录,所以我会丢失自己的目录结构)。我只是想知道是否有一种简单的方法可以将这些自引用R文件合并到一个文件中。
谢谢,
答案 0 :(得分:0)
好的我认为你可以使用扫描所有文件,然后在同一个新文件中再次写入文件。这可以使用readLines
和sink
:
sink("mynewRfile.R")
for(i in Nfiles){
current_file = readLines(filedir[i])
cat("\n\n#### Current file:",filedir[i],"\n\n")
cat(current_file, sep ="\n")
}
sink()
这里我假设你的所有文件目录都在长度为filedir
的向量Nfiles
中,我想你可以适应