授業内容


第26回(第13回)モジュールのネスト 1/19
26 コンピュータプログラミング
モジュールのネスト

前回のHP上で公開しているモジュールCORRと、課題にしておいたモジュールMEANSの2種類が現在僕達の手元にあります。

この二つを同時に実行させたい場合、モジュールを「ネスト」することが可能です。「ネスト」とはある一つのプログラムの中に、別のプログラムを呼び込むことで、複数のプログラムを組み木細工のように組み合わせて、一つのプログラムに組み立てていくことを言います。

次に、相関行列を表すモジュールCORRの中に、統計量を表すモジュールMEANSを呼び込んで、相関行列の前に統計量を表現するプログラムを見てみましょう。

【新規プログラム】
data cp00;
infile 'z:\base01FF.prn';
input samno hght wght ft atnd allw pname $ sex $ pc word xl mail;
run;
 
proc iml;
reset noprint;
use cp00;
read all var {hght,wght,ft} into x;
close cp00;
name = {'hght' 'wght' 'ft'};
 

start corr2(x,name);
n = nrow(x);
sum = x[+,];
xpx =t(x) * x - t(sum) * sum/n;
s = diag(1/sqrt(vecdiag(xpx)));
corr = s * xpx * s;

start means(x,name);
nrow = nrow(x);
ncol = ncol(x);
mean = x[:,];
min = x[><,];
max = x[<>,];
statn = {'件数' '平均' '最小' '最大'};
stat = j(ncol,1,nrow)||t(mean//min//max);
print stat[colname = statn rowname = name format=10.2];
finish means;
run means(x,name);

print '相関行列',,corr[rowname = name colname = name];
finish corr2;
run corr2(x,name);

quit;

【プログラム末尾】

 このとき、子モジュールのMEANSはモジュールCORR2の中にありますが、独立したモジュールとして呼び出すことも可能です。モジュールの特性は、そのどこからでも呼び出せる性質にあることを覚えておきましょう。


一つ前の週へ 先頭に戻る 次の週へ


ホーム シラバス Dec14.htm授業計画 授業へのQ&A コンピューター初心者の皆さんへ