我想从Stata 运行一个简单的R脚本,它读取SAS一个数据文件(使用sas7bdat
包)并写入一个Stata数据文件(使用{{1} }包)。我可以使用foreign
调用R脚本并运行,但无法使用CMD BATCH
包。
这是Stata脚本。
sas7bdat
以下是clear
winexec "C:\Program Files\R\R-3.1.0\bin\x64\R.exe" CMD BATCH temp.R
中的R脚本。
temp.R
如果我从R gui运行这个脚本,那么一切正常。同样,我使用# install.packages("sas7bdat")
# install.packages("foreign")
library("sas7bdat")
library("foreign")
# # test file (my file is local, so this line is commented out)
# download.file(url="http://www.ats.ucla.edu/stat/sas/dae/logit.sas7bdat",
# destfile="temp.sas7bdat",
# mode="wb")
temp <- read.sas7bdat("temp.sas7bdat")
write.dta(temp, "temp.dta")
从Windows命令提示符运行它。但是,当我使用"C:\Program Files\R\R-3.1.0\bin\x64\R.exe" CMD BATCH temp.R
(或winexec
)从Stata运行它时,它会失败。
当我从Stata运行R脚本时,这是shell
的内容。
temp.Rout
FWIW,我在Windows 8.1更新1上使用Stata 11.2。
更新
当我从Windows命令提示符运行temp.R时,我得到以下内容。
R version 3.1.0 (2014-04-10) -- "Spring Dance"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
[Previously saved workspace restored]
> # install.packages("sas7bdat")
> # install.packages("foreign")
> library("sas7bdat")
Error in library("sas7bdat") : there is no package called 'sas7bdat'
Execution halted
使用
生成C:\Users\richa_000\Desktop\SOquestion>"C:\Program Files\R\R-3.1.0\bin\x64\R.exe" CMD BATCH temp.R
temp.Rout
答案 0 :(得分:1)
出于某种原因,通过R
(或winexec
或shell
)从Stata调用!
会打开与从开始窗口打开命令提示符不同的命令提示符。至少在我的安装中,这会加载一组不同的环境变量,以便库路径是管理库路径。
> .libPaths()
[1] "C:/Program Files/R/R-3.1.2/library"
但是,我使用非管理员库,因此我的库路径包括管理员库和用户库。
> .libPaths()
[1] "C:/Users/richa_000/Documents/R/win-library/3.1"
[2] "C:/Program Files/R/R-3.1.2/library"
我尝试了来自rsource
的Stata包ssc
(上面的评论),但这并没有解决环境问题。我的hack只是附加到R脚本中的库路径,如下所示。
.libPaths(c(.libPaths(), "C:/Users/richa_000/Documents/R/win-library/3.1"))
这解决了问题并产生了正确的库路径(没有创建第二个库)。