有些时候,程序在运行的过程中需要产生一些临时的变量、矩阵等,而一旦程序运行结束,这些变量、矩阵等就不再需要。在这种情况下,我们可以生成临时变量。
生成临时变量的命令格式为:
tempvar var1 var2 …
这里,tempvar是生成临时变量的基本命令,var1、var2代表临时变量的名称。确切地说,命令tempvar生成的是临时变量的名称,我们后面可以使用这些名称来生成临时变量,这些临时变量在程序结束时会被自动删除。此外,tempvar生成的变量名被保存在局部宏内,在后面引用时需要加引号。
临时变量的一个优点在于,即便内存中已存在相同名称的变量,也不必先将其删除,不会影响我们定义临时变量。
例如,我们要定义并生成两个临时变量x和y(可能内存中已有变量是这个名称,但没有关系),可输入命令:
tempvar x y gen 'x'= … gen 'y'=…
第2步和第3步是生成相应的临时变量。这里没有给出具体的表达式,因为这完全视具体情况而定。需要注意的是,在命令tempvar之后,我们引用临时变量时都需要加上局部宏的引号。
类似的,定义临时矩阵或临时标量的命令为:
tempname ms1 ms2 …
tempname是定义临时矩阵或临时标量的基本命令,ms1、ms2等代表临时矩阵或临时变量的名称。
同样的,定义临时文件的命令为:
tempfile file1 file2 …
这里,file1、file2代表临时文件的名称。例如,在程序中可能会出现这样的命令:
preserve //保存初始数据 tempfile males females //定义临时文件males和females keep if sex==1 /*保留变量sex取值为1的观测值*/ save "`males'" /*将这些观测值保存到临时文件male中*/ restore, preserve //恢复原始数据 keep if sex==0 //保留变量sex取值为0的观测值 save "`females'" //将这些观测值保存到临时文件female中
与临时变量相同,在程序结束时,Stata会自动删除临时矩阵、临时标量或临时文件。