2016-05-15 8 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 | 
    +---------------------------------------------+ 

、Stataのは、変数またはスカラー名としてaの意味を理解しようとすると、それがない場合は救済されますうまくいかない。たとえそれが機能しても、あなたはそれをbとどのように組み合わせたいのかを理解することができず、それから救済されます。

要するに、通常はリテラル文字列を処理する必要があります。 matrix *namesコマンドは特別なものです。その入力は数字文字であっても必ずリテラル文字列であるためです。

+0

ありがとう、ニック。あなたの解釈の3分の1を過ぎていた。私は "world()"コマンドを知らなかった。 – StatsScared

+0

OKですが、 'world()'ではなく 'word()'であり、コマンドではなく関数です。 –

関連する問題