如何在Stata中的宏中存储LONG名称列表?

时间:2013-09-04 13:02:22

标签: global-variables stata local-variables variable-length

我需要在Stata中存储很长的变量名列表,在250个字符之后,不能再在本地或全局宏中存储字符。目前,我正在使用许多不同的全局变量来存储我正在使用的许多回归量的名称,但我更愿意将它们全部保存在一起。

编辑:下面的Maarten完全回答了这个问题,但我只想添加我用于精确的代码。

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"

一样。

1 个答案:

答案 0 :(得分:2)

这个问题在Stata 13中已经基本解决了,所以我猜你有一个旧版本。

您仍然可以在旧版本中执行此操作,只需省略等号,您可以在下面的示例中看到它(它在Stata 12中运行,在Stata 13中,两个宏都没有被截断)。这在以下文章中讨论:Nicholas J. Cox(2008)“Stata tip 70:Beware the evaluation equal sign”The 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