我使用rsource
命令在Stata中调用R来创建一个随机向量并将其返回到stata,这是我的do文件的简单工作示例:
clear
rsource, terminator(END_OF_R) rpath(C:\Program Files\R\R-3.1.2\bin\R.exe) roptions("--vanilla")
set.seed(1234);
library(mvtnorm);
library(tmvtnorm);
library(foreign);
xmean<- rep(0,100);
xSigma<- diag(100);
a<- rep(0,100);
b<- rep(+Inf,100);
X<- rtmvnorm(n=1,
mean=xmean, sigma=xSigma,
lower=a, upper=b,
algorithm="gibbs");
X<- t(X);
write.dta(data.frame(X), "C:/Users/.../Desktop/all/newx.dta");
END_OF_R
use newx.dta, replace
是否可以将一些值作为参数传递给rsource
,我可以在stata中定义(例如,rseed number或N-number of obs)。例如:
cap prog drop callr
program callr
version 13
syntax , seed(int) n(int)
.... to call rsource with `seed' and `n' as arguments
use newx.dta, replace
end
我是新手,在rsource帮助或interne中找不到并回答,所以任何评论都非常感谢!
答案 0 :(得分:2)
您可以使用roptions
选项将Stata宏值传递给R.传递两个本地宏的示例:
clear
local mynumber 999
local secondone 1000
rsource, terminator(END_OF_R) rpath("/usr/bin/R") roptions(`" --vanilla --args "`mynumber'" "`secondone'" "')
trailargs <- commandArgs(trailingOnly=TRUE);
trailargs;
trailargs[1];
trailargs[2];
END_OF_R
help rsource
中记录了这一点。如果不清楚这个概念,请参阅help macro
。