如何在Stata中的宏中存储一个长长的名称列表



我需要在Stata中存储一个很长的变量名列表,在大约250个字符之后,本地或全局宏中就不能再存储任何字符了。目前,我正在使用许多不同的全局变量来存储我正在使用的许多回归函数的名称,但我更喜欢将它们放在一个中。

编辑:马腾在下面完美地回答了这个问题,但我只想添加我使用的精确代码。

local RHSVARS = "var1 var2 var3 var4  var5 var6 var7 var8 var9 var10 var11 var12 var13 var14 var15 var16 var17 var18 var19"

不起作用,但

local RHSVARS "var1 var2 var3 var4  var5 var6 var7 var8 var9 var10 var11 var12 var13 var14 var15 var16 var17 var18 var19"

确实如此。

这个问题在Stata 13中基本上得到了解决,所以我想您有一个旧版本。

在旧版本中,您仍然可以通过省略等号来做到这一点,您可以在下面的示例中看到(它在Stata 12中运行,在Stata 13中,两个宏都没有被截断)。以下文章对此进行了讨论:Nicholas J.Cox(2008)"Stata tip 70:小心评估等号"《Stata Journal》,8(4):586-587。它现在在这里免费提供:http://www.stata-journal.com/article.html?article=pr0045

. // create local a with an equal sign
. local a = "`c(alpha)' `c(ALPHA)' `c(alpha)' `c(ALPHA)' `c(alpha)' `c(ALPHA)'"
. // create local b by leaving the equal sign out
. local b   "`c(alpha)' `c(ALPHA)' `c(alpha)' `c(ALPHA)' `c(alpha)' `c(ALPHA)'"
.
. // local macro a gets truncated
. di `: length local a'
245
. di "`a'"
a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X
>  Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T
> U V W X Y Z a b c d e f g h i j k l m n o p q r s
.
. // local macro b does not get truncated
. di `: length local b'
311
. di "`b'"
a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X
>  Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T
> U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q
>  R S T U V W X Y Z

最新更新