の新しいマクロプレフィックス語を生成try
マクロ:これは私が新しいマクロをしたい定義古いマクロ
a b c
値でマクロを生成します
local try "a b c"
try2
これは値をとる
da db dc
つまり、古いマクロの各要素に同じプレフィックスを追加し、新しいマクロとして定義したいと思います。
の新しいマクロプレフィックス語を生成try
マクロ:これは私が新しいマクロをしたい定義古いマクロ
a b c
値でマクロを生成します
local try "a b c"
try2
これは値をとる
da db dc
つまり、古いマクロの各要素に同じプレフィックスを追加し、新しいマクロとして定義したいと思います。
公式のStataでこれをサポートしている機能はありません。近くの関数については、help macrolists
を参照してください。
古いパッケージlistutil
(SSC)には、さまざまなコマンドが含まれています。prelist
が該当します。私はそれを書いたので、一般的な手法を適用することを推奨する他人の仕事については否定的ではありません。
local try "a b c"
local copy `try'
gettoken first copy : copy
while ("`first'" != "") {
local try2 `try2' d`first'
gettoken first copy : copy
}
di "try is {col 12} `try'"
di "try2 is{col 12} `try2'"
これもMataを使用して行うことができます。すなわち
local try "a b c"
mata: st_local("try2", invtokens("d" :+ tokens(st_local("try"))))
assert "`try2'" == "da db dc"
、これにより、第2ラインは最初の最も内側の機能を説明する、何である:
st_local("try")
:ローカル変数の内容をアクセスします。これは "a b c"と評価されるべきです。tokens("a b c")
:文字列をトークンに分割します。 tokens("a b c")
- >("a", "b", "c")
。"d" :+ ("a", "b", "c")
:マタでは、あなたは+
で文字列を連結し、ここに:+
ことができ、この要素単位を行い、その結果は(「DA」、「DB」、DC」)となりinvtokens(("da", "db", dc"))
:置きますバック文字列にトークン、すなわちinvtokens(("da", "db", dc"))
- >"da db dc"
st_local("try2", "da db dc")
:。。local try2 "da db dc"
のマタ相当あなたはマタについての詳細を調べることができ、例えばとst_local()
、tokens()
、およびinvtokens()
の機能します。 help mf_st_local
。
ありがとう、これは私の問題をうまく解決します。 :) – sxgn
@sxgnこれが役に立ちましたら、左側のチェックマークを使って答えとして選択してください。 –