2017-12-07 6 views
0

Stataのinputコマンドで、この好奇心が強い動作が見つかりました。Stata inputコマンドがローカルマクロを許可していません

clear 
local nums 1 1 1 
input a b c 
    `nums' 
end 


clear 
local num 1 
input a b c 
    1 1 `num' 
end 

'`' cannot be read as a number

はここで同じエラーを与える2つの例です:あなたは、引数としてどちらか一つの変数または複数のローカルマクロを渡すと

は、inputコマンドは、このエラーが発生します

inputコマンドにマクロを渡す方法はありますか?

+0

何が面白いアイデアであり、かつて私が見たことがないものです。 Stataの文書([18])では、Stataのどこでもマクロを使用できると主張していますが、毛髪を分割して入力コマンドに入力された情報がStataではなくデータであると主張しない限り、したがって、Stataでは "in"ではありません。私はあなたの入力データにマクロを使って何をしようとしているのかは、他の方法でも同様に達成できると考えています。 –

答えて

1

これは入力コマンドそのものにマクロを渡すことはありませんが、望みの結果が得られるので、これはおそらくあなたがしようとしていることに役立つでしょうか?

一般的な考え方は、変数の値をローカルに設定し、次にローカル(Excelのテキストと列のボタンに似ています)を分割することです。

clear 
local nums "1 1 1" 
foreach n of local nums { 
    if "`nums_2'" == "" local nums_2 "`n'" 
    else local nums_2 = "`nums_2'/`n'" 
} 

set obs 1 
gen a = "`nums_2'" 
split a, parse("/") gen(b) destring 
drop a 
+0

私の答えは、同様のテーマのリフです。 –

1

これは実質的にAaron Wolfの回答に対するコメントですが、コードでは物理的なコメントにあまりにもぎこちないものになっています。地元で何かを考える

は、それを行うための別の方法は、三つの変数に1 1 1を得るために多くの方法がありますが、当然のことながら

clear 
local num "1 1 1" 
set obs 1 

foreach v in a b c { 
    gettoken this num : num 
    gen `v' = `this' 
} 

です。

関連する問題