0

我需要在 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"

做。

4

1 回答 1

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
于 2013-09-04T13:23:23.577 回答