これはいわゆるグローバルな定義で、一旦設定をいじると、それ以降ずっとそのオプションが
反映されます。
options missing = - ;
とすれば数字欠損値の表示がハイフンになり、
options obs=1;とすると、1オブザベーションしか読み込まれなくなります。
よくある失敗として、そのオプションを適用したい部分が終わっても、元に戻すoptionsステートメント
を書き忘れて、それ以降の処理に全部適用されちゃったってパターンがあります。
処理が終わったらかならず、
options missing = . obs=max;
などとして、戻してやらなければいけません
まあ、この程度のオプションならいいですが、非常に込み入った設定をごく一部の処理にだけ
適用したい場合、戻すのも面倒なんですね。
それをパパっとやりたい、そんなあなたに朗報!
以下のコードを実行してみます
data a;
x=.;output;
x=1;output;
x=2;output;
run;
proc lua restart;
submit;
sas.submit[[
title "Luaのsas.submitの中①";
options missing=- obs=1;
proc print data=a;
run;
]]
endsubmit;
run;
title "普通のsas";
proc print data=a;
run;
proc lua;
submit;
sas.submit[[
title "Luaのsas.submitの中②";
proc print data=a;
run;
]]
endsubmit;
run;
proc lua restart;
submit;
sas.submit[[
title "restartしてリセットされたLuaのsas.submitの中";
proc print data=a;
run;
]]
endsubmit;
run;
と、luaのsas.submitの中で定義したオプションが
その中でのみ働いていることがわかります。
便利ですね。proc luaの使い道の一つかも知れません。
でも個人的には
う~ん、この仕様、正直いいんだか悪いんだか、ちょっと僕には微妙です。
ちょっとしたときにはいいけど、オプション空間が2つあるのは混乱を招くような気も…
ちなみにLuaのSAS.submit内のoptionは、最初に実行した際のグローバルの設定がベースになりますからね。
SAS.submit内でoptionを設定した場合と、Luaのsas.submit初回実行後にsasの方でoptionいじったときに初めて、環境がズレていくわけです。
0 件のコメント:
コメントを投稿