2016-05-15 37 views
1

例如,我知道我可以使用全局列表作为定义矩阵的列名,例如,如何将全局列表的元素放入变量中?

global letter = "a b c d e f g h" 
matrix colnames mymatrx = $letter 

..However,我希望创建一个具有可变内我的全球宏观的元素的Stata变量,像这样:

gen myvar = $letter (Note: this doesn't work) 

回答

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 | 
    +---------------------------------------------+ 

不带引号,塔塔将尝试让a作为变量或标名的意义,并挽救如果这样做不行。即使这样做,它也无法理解你想如何将它与b结合起来,然后就可以保释了。

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

+0

谢谢尼克。我是在你第三次解释之后。我不知道“世界()”命令。 – StatsScared

+0

好的,但它是'word()'而不是'world()',它是一个函数,而不是一个命令。 –

相关问题