Я хочу использовать макрос сделать петлю внутри Proc IML так:Do-петля в SAS-IML
%Let Tab1=FirstTable;
%Let Tab2=SecondTable;
%Let Tab3=ThirdTable;
*&Tab1-3 have been initialised as sas datasets;
proc iml;
* This works;
use &Tab1;
read all into Mat3;
print Mat3;
* This doesn't work;
%Macro Define_mx;
%do i=1 %to 2;
use &Tab&i;
read all into Mat&i ;
%end;
%Mend Define_mx;
%Define_mx;
*The two matrixes have not been initialised;
print Mat1;
print Mat2;
quit;
В действительности я должен буду инициализируюсь как 50 матриц так сделай петлю необходимо. Я не могу понять, почему цикл не может видеть & Tab & i как макропеременная. Я также пробовал обходной путь с нормальным (не-макро) do-loop, используя substr, чтобы объединить имена переменных, но он тоже не работал. Что мне здесь не хватает?
Двойной amperstand на вкладке ... Я идиот. – Pane
Блестящий! Отправьте свое решение в качестве ответа и примите его. Это определенно достаточно распространенная ошибка, которая стоит иметь в качестве решения в StackOverflow :) – Joe