例如,我知道我可以使用全局列表作为已定义矩阵的列名,例如
func1
..但是,我想创建一个Stata变量,它在变量中包含我的全局宏的元素,如下所示:
B
答案 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
命令是特殊的,因为它们的输入必须是文字字符串(即使它们是数字字符)。