仅对 SAS IML 中矩阵中的某些列执行计算

Performing calculations on only certain columns in a matrix in SAS IML

我需要在 IML 中创建一个包含多列的矩阵,并仅对某些列进行一些计算(一列中的值不得更改)。例如,我需要将一列乘以另一列元素。这个的语法是什么?

您可以通过在等号左侧引用要更改的列号来执行此操作。

例如:

proc iml;
  x = {1 2,
       3 0, 
       5 4};
  y = {1,
       2,
       3};

  x[,1] = x[,1] # y;
  print x;
quit;

正如 Rick 在评论中指出的那样,您还可以将 x 的第 1 列与第 2 列相乘:

proc iml;
  x = {1 2,
       3 0, 
       5 4};

  x[,1] = x[,1] # x[,2];
  print x;
quit;

您可能还想查看 subscript reduction operators, as well as Rick's suggestions for shorthand notation for row and column operations 以了解有关相关概念的更多信息。