确定执行脚本的路径

确定执行脚本的路径

我有一个叫foo.R其中包括另一个脚本other.R,它位于同一个目录中:

#!/usr/bin/env Rscriptmessage("Hello")source("other.R")

但我想R才能发现other.R不管当前的工作目录是什么。

换句话说,foo.R需要知道它自己的路。我怎么能这么做?


慕田峪9158850
浏览 793回答 3
3回答

交互式爱情

这里这个问题有一个简单的解决办法。这个命令:script.dir&nbsp;<-&nbsp;dirname(sys.frame(1)$ofile)返回当前脚本文件的路径。脚本保存后,它就能工作了。

守着一只汪

当从R控制台“源”时,我无法获得SuppressingFire的解决方案。在使用Rscript时,我无法让Hadley的解决方案工作。两个世界中最好的?thisFile&nbsp;<-&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdArgs&nbsp;<-&nbsp;commandArgs(trailingOnly&nbsp;=&nbsp;FALSE) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;needle&nbsp;<-&nbsp;"--file=" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match&nbsp;<-&nbsp;grep(needle,&nbsp;cmdArgs) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(length(match)&nbsp;>&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Rscript &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(normalizePath(sub(needle,&nbsp;"",&nbsp;cmdArgs[match]))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;'source'd&nbsp;via&nbsp;R&nbsp;console &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(normalizePath(sys.frames()[[1]]$ofile)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP