【问题标题】:How do I store a LONG list of names in a macro in Stata?如何在Stata的宏中存储一长串名称?
【发布时间】:2013-09-04 13:02:21
【问题描述】:

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

确实如此。

【问题讨论】:

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


    【解决方案1】:

    这个问题在 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
    

    【讨论】:

    • @Superpronker Maarten Buis 已经猜到了可能的答案,但请显示您在类似问题中使用的代码。不要单独讨论症状,而要准确地展示你做了什么。
    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多