Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当附近有多个副本时,如何告知rscript报告其路径/目录_R_Batch File_Directory - Fatal编程技术网

当附近有多个副本时,如何告知rscript报告其路径/目录

当附近有多个副本时,如何告知rscript报告其路径/目录,r,batch-file,directory,R,Batch File,Directory,有几篇文章与这个主题相关,但这些解决方案(比如source(…,chdir=TRUE))似乎都不适合我。我需要一个r脚本,它可以识别它的目录,并使用setwd()将r工作目录设置为这个目录。换句话说,脚本需要将R工作目录设置为脚本存储的目录。在附近的目录中也有脚本的多个副本。i、 e 。/CCurtisModelData/run1/myscript.r“ 。/CCurtisModelData/run2/myscript.r“ 。/CCurtisModelData/run3/myscript.r“

有几篇文章与这个主题相关,但这些解决方案(比如
source(…,chdir=TRUE)
)似乎都不适合我。我需要一个r脚本,它可以识别它的目录,并使用
setwd()
将r工作目录设置为这个目录。换句话说,脚本需要将R工作目录设置为脚本存储的目录。在附近的目录中也有脚本的多个副本。i、 e

。/CCurtisModelData/run1/myscript.r“

。/CCurtisModelData/run2/myscript.r“

。/CCurtisModelData/run3/myscript.r“

因此,如果myscript是从run3执行的,那么它需要确定它在run3中的位置。这段代码需要放在脚本的开头,这样我就可以设置工作目录并使用相对路径加载数据

我不能使用R包

我无法重命名myscipt,即myscript1.r

我的脚本正在从
“./CCurtisModelData/run1”“../CCurtisModelData/run2”“../CCurtisModelData/run3”中包含的批处理文件执行

批处理文件如下所示。脚本的路径是相对的

"C:\Users\ccurtis11\Documents\R\R-3.0.1\bin\x64\R.exe" CMD BATCH "myscript.r" "myscript.r.rout"
我知道我应该使用
Rscript
,但我首先让脚本使用
CMD
,我喜欢让它报告一个.rout文件。将来我可能会切换到
Rscript
。如果切换不能帮助我解决这里的具体问题,那么我现在对切换不感兴趣

我想到的唯一其他可能的替代方法可能是使用批处理文件将目录信息传递给r脚本。在与同事协商后,我相当肯定这会奏效。我正在做一些并行处理工作,让r处理一些计算机模型的数据处理。所以我仍然在学习我可以逃避的事情

因此,如果有人能告诉我如何将目录信息从批处理文件传递到R,那就太好了

然而,如果有一个解决方案让r脚本完成所有工作,那么它会更有说服力

我能找到的最接近的就是这个

filenam=list.files(“…”,full.names=TRUE,recursive=TRUE,pattern=“(myscript.r)”)
setwd(dirname(filenam))

问题是它会找到myscript.r的所有副本并返回第一个副本,即“./run1/myscript.r”


谢谢你的专业人士提出的任何想法。

好的,我为我自己的问题贴出答案感到难过,但我想如果这能帮助别人解决问题,那是值得的

事实证明,我使用的是
R CMD
,这确实让我望而却步

当我切换到
Rscript
时,我尝试的第一个解决方案成功了。好在我还可以保留我的r.out文件

我的蝙蝠

“C:\Users\ccurtis11\Documents\R\R-3.0.1\bin\x64\Rscript.exe”myscript.R>myscript.R.rout

myrscript:


args好吧,我为自己的问题贴出答案而感到难过,但我想如果这能帮到别人,那是值得的

事实证明,我使用的是
R CMD
,这确实让我望而却步

当我切换到
Rscript
时,我尝试的第一个解决方案成功了。好在我还可以保留我的r.out文件

我的蝙蝠

“C:\Users\ccurtis11\Documents\R\R-3.0.1\bin\x64\Rscript.exe”myscript.R>myscript.R.rout

myrscript:


args我刚刚为一些脚本设计了这个,我正试图使其具有普遍的可移植性。要确保脚本的可移植性,请始终从以下内容开始:

wd <- getwd()
setwd(wd)

wd我刚刚为一些脚本解决了这个问题,我正试图使其具有普遍的可移植性。要确保脚本的可移植性,请始终从以下内容开始:

wd <- getwd()
setwd(wd)

wd缺少一些信息:如何执行脚本?使用R、Rscript或source()?在执行脚本之前,能否将批处理文件
cd
放入目录中?然后让Rscript使用
getwd()
。将
getwd
添加到脚本中如何?哦,老鼠,@flodel ninja用100秒的时间警告我。@flodel将在脚本启动时自动设置R的工作目录,这在批处理文件中会是什么样子?我添加了新信息@卡尔:我知道关于
getwd()
。脚本需要找到它所在的运行程序(即run1、run2、run3),然后
setwd()
找到该位置。非常感谢大家的快速回复。您如何调用脚本?缺少一些信息:您如何执行脚本?使用R、Rscript或source()?在执行脚本之前,能否将批处理文件
cd
放入目录中?然后让Rscript使用
getwd()
。将
getwd
添加到脚本中如何?哦,老鼠,@flodel ninja用100秒的时间警告我。@flodel将在脚本启动时自动设置R的工作目录,这在批处理文件中会是什么样子?我添加了新信息@卡尔:我知道关于
getwd()
。脚本需要找到它所在的运行程序(即run1、run2、run3),然后
setwd()
找到该位置。非常感谢大家的快速回复。你们如何称呼脚本?发布解决方案没什么错。首先,我们要祝贺你做了这项工作;第二,它可能会激励人们在类似的情况下使用它。发布解决方案没什么错。首先,我们要祝贺你做了这项工作;第二,它可能会激励人们在类似的情况下使用它。