出于某些非常恼人的原因,我无法直接在数据中心调用我的R脚本。我只能拨打stata
,然后stata
必须拨打我的R脚本。
目前,我正在尝试使用shell
命令:
capture cd C:\\Correct\Dir
shell “C:\\Program Files\R-3.1.2\bin\Rscript.exe" "myFile.R"
路径是正确的,但我在Stata中运行时只得到蓝屏,没有其他事情发生。蓝屏中有一条消息,但它立即消失,所以我不知道它说的是什么。
如何进行调试呢?这样做有更好的方法吗?我不想使用rsource
之类的其他软件包,因为它们需要在安装到数据中心之前进行认证,这是一个漫长的过程。
答案 0 :(得分:2)
我认为双反斜杠的存在导致了这个问题。以下适用于我:
STATA
cd "path\of\choice"
shell "C:\Program Files\R\R-3.1.2\bin\Rscript.exe" "test.R"
test.r
setwd("path\\of\\choice")
data(mtcars)
mtcars
write.csv(mtcars, "cars.csv")
答案 1 :(得分:2)
以下是Stata呼叫R的一个例子(不可再现)
*----- CALL R -----
// location of input/output files for R
local dirq "`pdir'/proc_data/q_irepriv.csv" // input 1 -> arg1
local dirh "`pdir'/proc_data/h_nophincome.csv" // input 2 -> arg2
local dirRdta "`pdir'/proc_data/`dofile'.Rdta" // output -> arg3
local dirout "`pdir'/" // project_dir -> arg4
local dirout "`dofile'/" // do_file_stub -> arg5
// call -rsource- passing the locations as arguments
rsource using "`pdir'/r_files/`dofile'.R", ///
roptions(`" --vanilla --args "`dirq'" "`dirh'" "`dirRdta'" "`pdir'" "`dofile'" "')
*----- END OF R -----
我使用rsource
,这是一个用户编写的命令,可以使用ssc install rsource
下载。
另一方面,Stata倾向于在这些情况下使用正斜杠。请参阅Nick Cox撰写的Stata tip 65: Beware the backstabbing backslash。
您报告的蓝屏消失,没有其他任何事情发生。这可能是R在R脚本中出现一些错误的结果。举个例子:
.r
脚本包含:
# output OK
head(mtcars)
# provoke error
2+*2
并且您的Stata文件包含:
shell "C:/Program Files/R/R-3.0.3/bin/x64/Rscript.exe" --no-save --no-restore --verbose "D:/Datos/rferrer/Desktop/rcars.r"
上述内容将重现您的报告。
要进行调试,您可以使用OS shell命令重定向输出和错误消息。而不是后者,尝试:
shell "C:/Program Files/R/R-3.0.3/bin/x64/Rscript.exe" --no-save --no-restore --verbose "D:/Datos/rferrer/Desktop/rcars.r" > Routput.txt 2> Rerror.txt
这会生成两个文件:
Routput.txt 包含
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
和 Rerror.txt 包含
running
'C:\Program Files\R\R-3.0.3\bin\x64\Rterm.exe --slave --no-restore --no-save --no-restore --file=D:/Datos/rferrer/Desktop/rcars.r'
Error: inesperado '*' in "2+*"
Ejecución interrumpida
(错误是西班牙语,但当然,这是无关紧要的。)
这是在Windows 7企业版上。