R命令的等效值是什么;资料来源;在斯塔塔?

R命令的等效值是什么;资料来源;在斯塔塔?,r,stata,R,Stata,我是一个在斯塔塔的土地上挣扎的R爱好者。我在尝试将R“翻译”为Stata时遇到了以下问题: 在R中,为了不让我的脚本文件变得太大和疯狂,我喜欢把它们写在较小的部分,然后有一个主R脚本在较小的部分读取,例如 source(“script-1.R”) 代码blah1 代码blah2 source(“script-2.R”)etc 我想在斯塔塔做同样的事情,并且已经尝试过了 do“script-1.do” 代码blah1 代码blah2 do“script-2.do”etc 但是,我发现如果我在scr

我是一个在斯塔塔的土地上挣扎的R爱好者。我在尝试将R“翻译”为Stata时遇到了以下问题:

在R中,为了不让我的脚本文件变得太大和疯狂,我喜欢把它们写在较小的部分,然后有一个主R脚本在较小的部分读取,例如

  • source(“script-1.R”)
  • 代码blah1
  • 代码blah2
  • source(“script-2.R”)
    etc
  • 我想在斯塔塔做同样的事情,并且已经尝试过了

  • do“script-1.do”
  • 代码blah1
  • 代码blah2
  • do“script-2.do”
    etc
  • 但是,我发现如果我在
    script-1.do
    中创建宏,例如
    localbird 1
    在主脚本中无法访问对象/宏bird,也无法访问
    script-2.do
    。如果我试图在主脚本中显示
    bird
    的内容,它就是空的


    为什么会这样?有什么建议吗?

    尝试使用
    包含
    。您可以在此处阅读
    包含
    执行
    (或
    运行
    )之间的区别:


    Stata宏分为两组:
    local
    global
    本地
    仅存在于定义它们的过程中(可以是交互式会话、do文件或
    程序
    )。如果您在
    script-1.do
    中定义了某个内容,它将只存在于那里,并且您必须显式地
    返回它才能在其他地方可见。(尽管Do文件不能真正做到这一点;您必须定义一个
    程序,rclass
    来返回值,并且将代码块分解为
    程序
    s是一个很好的做法。)避免使用
    全局
    宏,除非绝对不可避免地需要

    R对其对象的范围有一定的控制,但与Stata对宏的控制相比,它几乎没有任何优势。变量和数据集在Stata中仍然是全局的,并且一次不能有多个数据集。另一件您会对Stata感到惊喜的事情是通过引用传递参数,与R通过值传递相比,它节省了大量内存。因此,不同的方案有不同的优势,说一个方案比另一个方案好是短视的


    尽管如此,基思建议使用
    include
    ,这是正确的。我只是想解释一下你问题的“为什么”部分。此外,如果您需要在程序之间交换的是一个数字,您可以将其存储在一个显式命名的
    标量
    中,所有进程都可以看到该标量。

    我建议您查看针对您过去的一些问题提供的答案,并查看是否有任何答案可以检查为“可接受”答案。别忘了,你也可以对那些有用的东西进行投票:这是帮助未来的访问者识别针对特定问题的相关响应的最佳方式。