如何将全局列表的元素放入变量?

时间:2016-05-15 07:15:22

标签: stata

例如,我知道我可以使用全局列表作为已定义矩阵的列名,例如

func1

..但是,我想创建一个Stata变量,它在变量中包含我的全局宏的元素,如下所示:

B

1 个答案:

答案 0 :(得分:3)

目前尚不清楚你想要什么,但所有这三种解释都是合法的:

clear 
set obs 8 
global letter "a b c d e f g h" 

gen letter1 = "$letter" 
gen letter2 = "$letter" in 1 
gen letter3 = word("$letter", _n) 

list, sep(0) 

     +---------------------------------------------+
     |         letter1           letter2   letter3 |
     |---------------------------------------------|
  1. | a b c d e f g h   a b c d e f g h         a |
  2. | a b c d e f g h                           b |
  3. | a b c d e f g h                           c |
  4. | a b c d e f g h                           d |
  5. | a b c d e f g h                           e |
  6. | a b c d e f g h                           f |
  7. | a b c d e f g h                           g |
  8. | a b c d e f g h                           h |
     +---------------------------------------------+

如果没有引号,Stata会尝试将a视为变量或标量名称,如果不起作用则挽救。即使这样有效,它也无法理解你想如何将它与b结合起来,然后就会拯救出来。

简而言之,您通常需要“”来处理文字字符串。 matrix *names命令是特殊的,因为它们的输入必须是文字字符串(即使它们是数字字符)。