楼主: zx169584
4748 10

[编程问题求助] 关于stata的local和global的用法的疑问 [推广有奖]

  • 1关注
  • 0粉丝

大专生

41%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
1.7511
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
369 点
帖子
21
精华
0
在线时间
69 小时
注册时间
2023-11-25
最后登录
2025-5-8

楼主
zx169584 学生认证  发表于 2024-6-22 16:00:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
使用local命令储存变量后,如果后续要运行的任何命令里引用了local储存的变量集,是不是必须把local存储变量的命令一起运行?我的代码如下:
sysuse auto ,clear
local varlist trunk price weight   把trunk price weigh 3个变量存储在varlist里
reg mpg `varlist'
疑问是,如果我先运行前2排代码,再运行第3排,结果如下

但是如果我一次性运行3排代码,结果如下

很明显只有把含local的命令一起运行,回归时,存储的3个变量才加入回归中,这是为什么呢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Global Stata Local lobal tata

沙发
zx169584 学生认证  发表于 2024-6-22 16:02:52
第一次操作结果如下

微信截图_20240622160129.png (68.37 KB)

第一种操作的结果

第一种操作的结果

藤椅
zx169584 学生认证  发表于 2024-6-22 16:03:40
第二次的结果如下

微信截图_20240622160141.png (110.51 KB)

第二种操作的结果

第二种操作的结果

板凳
赵安豆 发表于 2024-6-22 16:04:41
在Stata中,`local` 命令用于定义和储存宏(macro),这些宏可以是单一字符串或由多个元素组成的列表。当你使用 `local varlist trunk price weight` 这样的命令时,你创建了一个名为 `varlist` 的本地宏,并将其设置为包含三个变量名的列表。

在你的示例中,当你试图只运行第三行代码 `reg mpg `varlist''` 而不重新执行定义 `varlist` 宏的第一行和第二行时,Stata会尝试使用之前定义过的 `varlist` 宏。但是,如果从你打开或运行其他命令开始算起的时间段内没有执行过 `local varlist trunk price weight` 这个命令,那么 `varlist` 宏将不会被定义或者可能已经被之前的代码覆盖了。

因此,在尝试使用宏之前,确保已经重新定义它(特别是在长时间的会话中,或在运行其他可能改变宏值的代码后),这是很重要的。如果你只运行第三行而没有先运行前两行,则 `varlist` 在当前上下文中是未定义的,Stata将无法识别这个宏并抛出错误。

一次性运行三排代码可以确保 `varlist` 宏在尝试使用之前被正确地定义和初始化。如果需要重复运行某些分析或命令而不重新定义宏,在会话开始时或者在宏可能丢失值后定义它们是一个好习惯。此外,你也可以保存和加载宏的值以避免这样的问题。

总之,在引用 `local` 或 `global` 宏之前,确保该宏已经被正确地定义并且其值是当前所期望的,这是十分必要的。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



报纸
zx169584 学生认证  发表于 2024-6-22 16:07:11
赵安豆 发表于 2024-6-22 16:04
在Stata中,`local` 命令用于定义和储存宏(macro),这些宏可以是单一字符串或由多个元素组成的列表。当你 ...
这是否意味着,我最好使用global而不是local去定义宏呢
global和local具体有什么区别呢

地板
917968079 发表于 2024-6-22 18:33:18
zx169584 发表于 2024-6-22 16:07
这是否意味着,我最好使用global而不是local去定义宏呢
global和local具体有什么区别呢
global 是全局暂元是全局可用的,local是局部暂元仅在一次会话中可用。使用哪个需要看情况,如果是dofile中写写回归的代码全局暂元比较方便,但如果是用stata自己写程序就不要用全局暂元

7
yesbb 发表于 2024-6-23 11:49:08 来自手机
赵安豆 发表于 2024-6-22 16:04
在Stata中,`local` 命令用于定义和储存宏(macro),这些宏可以是单一字符串或由多个元素组成的列表。当你 ...
感谢您的资料

8
tianwk 发表于 2024-6-23 15:34:39
thanks for sharing

9
okwh 发表于 2024-6-24 09:45:06
local是局部暂元仅在一次会话中可用  的一次 是指   一个do文件,  连续执行的多个命令行,  或用include在多个do文件使用。

连续执行的多个命令行, 做为一组连续执行。

10
鬣狗帅哥 学生认证  发表于 2024-6-25 21:28:51
一般我local是用来定义模型的,定义变量我一般使用的是global,使用global时只需要运行一次,在窗口不关闭时就算该数据集也可以继续用,除非重新定义一次。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 08:54