Hi guys, I have the following problem. I have the following code:
_shock=2;
Names=MakeStrMat(9,1);
Names[1]="Capital Stock";
Names[2]="Growth";
Names[3]="Output";
Names[4]="Taxable income";
Names[5]="Consumption";
Names[6]="Investment";
Names[7]="Hours worked";
Names[8]="Real wages";
Names[9]="Rent rate of capital";
Legend=MakeStrMat(2,1);
Legend[1]="Variable marginal tax rate";
Legend[2]="Constant marginal tax rate";
struct PlotControl myPlot;
myPlot=PlotGetDefaults("XY");
PlotOpenWindow();
PlotSetLegend(&myPlot,Legend);
te=seqa(0,1,T.nirf);
for i (1,9,1);
plotlayout(3,3,i);
plotSetTitle(&myPlot,Names[i]);
temp=arraytomat(T.irf[_shock,.,i])~arraytomat(T1.irf[_shock,.,i]);
plotxy(myPlot,te,temp);
endfor;
_shock can take the values 1 and 2. How can I complete or adapt the loop so that the code runs over both values of _schock, so that the plots are created twice, so to speak? Thanks in advance
1 Answer
0
If I am understanding you correctly, I think this will do what you want:
_all_shocks= {1, 2};
Names=MakeStrMat(9,1);
Names[1]="Capital Stock";
Names[2]="Growth";
Names[3]="Output";
Names[4]="Taxable income";
Names[5]="Consumption";
Names[6]="Investment";
Names[7]="Hours worked";
Names[8]="Real wages";
Names[9]="Rent rate of capital";
Legend=MakeStrMat(2,1);
Legend[1]="Variable marginal tax rate";
Legend[2]="Constant marginal tax rate";
struct plotControl myPlot;
myPlot=plotGetDefaults("XY");
plotSetLegend(&myPlot,Legend);
for j(1, rows(all_shocks), 1);
_shock = all_shocks[j];
// Open new graph window for
// each shock
plotOpenWindow();
te=seqa(0,1,T.nirf);
for i (1,9,1);
plotlayout(3,3,i);
plotSetTitle(&myPlot,Names[i]);
temp=arraytomat(T.irf[_shock,.,i])~arraytomat(T1.irf[_shock,.,i]);
plotxy(myPlot,te,temp);
endfor;
endfor;
Your Answer
1 Answer
0
If I am understanding you correctly, I think this will do what you want:
_all_shocks= {1, 2};
Names=MakeStrMat(9,1);
Names[1]="Capital Stock";
Names[2]="Growth";
Names[3]="Output";
Names[4]="Taxable income";
Names[5]="Consumption";
Names[6]="Investment";
Names[7]="Hours worked";
Names[8]="Real wages";
Names[9]="Rent rate of capital";
Legend=MakeStrMat(2,1);
Legend[1]="Variable marginal tax rate";
Legend[2]="Constant marginal tax rate";
struct plotControl myPlot;
myPlot=plotGetDefaults("XY");
plotSetLegend(&myPlot,Legend);
for j(1, rows(all_shocks), 1);
_shock = all_shocks[j];
// Open new graph window for
// each shock
plotOpenWindow();
te=seqa(0,1,T.nirf);
for i (1,9,1);
plotlayout(3,3,i);
plotSetTitle(&myPlot,Names[i]);
temp=arraytomat(T.irf[_shock,.,i])~arraytomat(T1.irf[_shock,.,i]);
plotxy(myPlot,te,temp);
endfor;
endfor;