0

SAS/IML では、その名前のマクロしか利用できない場合、変数を変更することは可能ですか? 左側で symget を使用するとエラーが発生します。

proc iml;
    variable = 0;
    call symput ('macVar', 'variable');
/*  &macVar = 1;*/
    symget('macVar') = 1;
    print variable;
quit;

ERROR 180-322: Statement is not valid or it is used out of proper order.

& 記号は機能しますが、コードは do ループにあり、symgetを使用する必要があります。

この問題は、可変数の引数を受け取り、それらを複数の do ループで処理する関数を作成するタスクに起因します。それは次の質問に関連しています。

ループ内のマクロ (symget) を使用した Mattrib の SAS IML の使用

マクロで定義された変数への SAS IML パス参照

SAS-IML で名前をループしますか?

他の言語 (R、C++、Java、Matlab など) では、このタスクは抽象化の助けを借りて解決されます。

アイデア?


解決した

どうもありがとう。役に立つ記事。

4

1 に答える 1

0

VALSET サブルーチンを使用します。

    call valset(symget('macVar'), 1);

「何百ものデータセットを行列に読み込む」という記事を見つけました。非常に多くの質問が似ているため、役に立ちます。

于 2015-01-09T15:56:14.100 に答える