我想在Windows机器上使用Rscript.exe执行R脚本myscript.R
。但是,我的默认主文件夹配置为\\\\<domain>/home/m/myname/Documents
。我在run.bat
所在的同一文件夹(实际上是pendrive中的文件夹)上创建了一个包装DOS批处理脚本(myscript.R
),以使其成为当前的工作目录:
@ECHO OFF
REM This batch file is an interface to run R scripts from the command line
SET RSCRIPT="c:\Program Files\R\R-3.4.3\bin\Rscript.exe"
echo "Changing drive and directory to %~dp0"
pushd "%~dp0"
REM we change "\" to "/"
setlocal enabledelayedexpansion
set f=%*
set "f=!f:\=/!"
%RSCRIPT% %f%
popd
我通过run.bat "myscript.R" --dir ../AnotherFolder
到目前为止,这么好。但是,问题是脚本需要将工作文件夹更改为一级(../AnotherFolder
)文件夹,但setwd()
R函数失败。通过调试,我可以看到问题是Rscript.exe
加载脚本myscript.R
,同时仍然将默认目录设置为主文件夹。
问题是:我怎么能让Rscript.exe忽略默认的主目录并将脚本目录作为当前的工作目录。
答案 0 :(得分:0)
好的,我整天都在摸不着头脑后找到了自己的答案。我修改了包装批处理文件并添加了一个额外的命令行参数--drive
以供我的R脚本处理:
@ECHO OFF
REM This batch file is an interface to run R scripts from the command line
SET RSCRIPT="c:\Program Files\R\R-3.4.3\bin\Rscript.exe"
echo "Changing drive and directory to %~dp0"
pushd "%~dp0"
REM we change "\" to "/"
setlocal enabledelayedexpansion
set f=%*
set "f=!f:\=/!"
set P=%~dpnx1
%RSCRIPT% %f% --drive "%P:~0,2%"
popd
然后,我的R脚本必须执行setwd(drive)
,其中drive
包含通过--drive
选项传递的值(例如&#34; F:&#34;),然后执行{ {1}}在当前文件夹的相对路径上。