R命令的等效值是什么;资料来源;在斯塔塔?
我是一个在斯塔塔的土地上挣扎的R爱好者。我在尝试将R“翻译”为Stata时遇到了以下问题: 在R中,为了不让我的脚本文件变得太大和疯狂,我喜欢把它们写在较小的部分,然后有一个主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
source(“script-1.R”)
source(“script-2.R”)
etcdo“script-1.do”
do“script-2.do”
etcscript-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
,这是正确的。我只是想解释一下你问题的“为什么”部分。此外,如果您需要在程序之间交换的是一个数字,您可以将其存储在一个显式命名的标量中,所有进程都可以看到该标量。我建议您查看针对您过去的一些问题提供的答案,并查看是否有任何答案可以检查为“可接受”答案。别忘了,你也可以对那些有用的东西进行投票:这是帮助未来的访问者识别针对特定问题的相关响应的最佳方式。