如何在Stata中的另一个ado文件中运行ado文件?

如何在Stata中的另一个ado文件中运行ado文件?,stata,Stata,在R中,我可以使用 source("script.R") 在斯塔塔我怎么能做同样的事 在Stata中,有两种类型的脚本: 有do文件,这些文件是您键入时的命令序列,可能包含几乎任何内容, 及 有ado文件,它们是自包含的程序脚本。Ado代表“自动加载的DO文件” 主要区别在于,要执行do文件,您需要doit或runit: do whatever.do 显示输出,以及 run whatever.do 抑制输出 顾名思义,自动加载的do文件是自动加载的。你打字的时候 blah blah1 bl

在R中,我可以使用

source("script.R")

在斯塔塔我怎么能做同样的事

在Stata中,有两种类型的脚本:

  • 有do文件,这些文件是您键入时的命令序列,可能包含几乎任何内容, 及
  • 有ado文件,它们是自包含的程序脚本。Ado代表“自动加载的DO文件”
  • 主要区别在于,要执行do文件,您需要
    do
    it或
    run
    it:

    do whatever.do
    
    显示输出,以及

    run whatever.do
    
    抑制输出

    顾名思义,自动加载的do文件是自动加载的。你打字的时候

    blah blah1 blah2
    
    Stata将首先在其内存中查找程序
    blah
    。如果不存在,它将在其
    adopath
    中标识的子目录中查找文件
    blah.ado
    ,默认情况下,该子目录包括Stata自己的目录以及当前目录(如果您感兴趣,请键入
    adopath
    以了解更多信息)。如果它发现这个
    blah.ado
    ,它将(1)确保它里面有
    program define blah
    ,并且(2)尝试使用您提供的任何参数来执行这个程序(
    blah1 blah2
    )。如果在任何地方都找不到文件
    blah.ado
    ,它将发出错误消息:

       . blah blah1 blah2
       unrecognized command:  blah
       r(199);
    

    在.ado文件中可以定义多个程序。在这种情况下,top程序可以调用后面的程序。您使用的许多.ado文件都是以这种方式构建的。我不确定Stata如何处理与adopath中其他程序的命名冲突,但它很容易测试。