Ошибка при присвоении значения матрице в процедуре iml

#sas

#sas

Вопрос:

Я просто хочу присвоить строку матрицы вектором в процедуре iml, но она возвращает ошибку. Код выглядит следующим образом, как я могу это исправить?

  proc iml;
 za=repeat(0,4,3);
 a=123;
 b=321;
 c=222;
 za[1,]={a,b,c};
 run;
 print(za);
 proc print;run;
  

Ответ №1:

В вашем коде есть несколько проблем. {x, y, z} — вектор столбца. {x y z} — вектор строки. Это означает, что вы пытаетесь вставить столбец в строку. Кроме того, синтаксис немного не в порядке.

Используя свой собственный код, вы можете это сделать.

 proc iml;
 za=repeat(0,4,3);
 a=123;
 b=321;
 c=222;
 za[1,] = a || b || c;
 print(za);
quit;
  

Более простым способом было бы

 proc iml;
   za = j(4, 3, 0);
   v = {123 321 222};
   za[1, ] = v;
   print za;
quit;