用参数调用rsource

时间:2014-12-05 03:20:54

标签: r arguments stata

我使用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中找不到并回答,所以任何评论都非常感谢!

1 个答案:

答案 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