local與global


引子

local的使用是一次性的。
比如,

clear
set obs 100
gen oldvar=1

local a "myvar"
generate `a' = oldvar

generate a = oldvar

一共六行命令,和local相關的是第四行和第五行,這兩行一定要一起選中一起運行,不可以單獨運行,否則會報錯
這里,四五行分開運行時,第五行運行后,報錯“too few variables specified

如果用global的話,就可以單獨運行。

clear
set obs 100
gen oldvar=1
global a "myvar"
generate $a = oldvar
generate a = oldvar

注意: local的暫元調用是單引號:` ' ,global的暫元調用是美元符號:$ .

在具體使用上,local只在這一次運行中有用,用完立馬消失,不留下痕跡。--局部宏
global定義了之后,只要這個stata主窗口沒退出,global的定義就可以一直用,換do file或者換數據都可以。--全局宏

具體介紹

詳參

Stata的暫元其實就是一種“別名"( alias)

全局暫元 vs.局部暫元

“局部暫元”( local macro)之所以稱為“局部”(loca),是因為其所定義的暫元僅在定義它的do文件中才有效,一旦此do文件執行完畢,則其中所定義的局部暫元將不復存在。反之,“全局暫元"”( global macro)則在do文件執行完畢后仍存在(即使你打開另外的數據集),直至徹底退出Stata程序才會消失。

定義局部暫元的一般句型為
local name value

與局部暫元類似,定義全局暫元的一般句型為
global name value

在 Stata內部,將全局暫元與局部暫元視為兩類不同的事物,並在局部暫元之前加下划線;比如,分別記為“_letter"(全局暫元)與“ letter”(局部暫元)

顯示或刪除暫元

如果想顯示當前所有的暫元,可使用如下命令

macro list

letter: A B C

S_E_depv: price

S_E_cmd: regress

S_E_vce: Robust

S_level: 95

S_ADO: BASE;SITE;.;PERSONAL;PLUS;OLDPLACE

_count: 4

_letter1: A B C

_letter: A B C

其中,“letter” 是名為 letter 的全局暫元,而 “letter” 是名為 letter 的局部暫元。以 “S” 開頭的暫元為 “系統暫元”(system macro),不會被刪除。如果要刪除上面的某個暫元,比如 “_letter1”,可使用命令

. macro drop _letter1

如果要刪去除系統暫元之外的所有暫元,可使用命令

. macro drop _all


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM