在 IML 过程中,我有一个带有命名列的矩阵。
proc iml;
myMatrix = {1 2 3, 1 4 9};
mattrib myMatrix colname={"a", "b", "c"};
print myMatrix;
print (myMatrix[,"a"]);
/* load module = myModule;*/
/* run myModule(myMatrix);*/
run;
我可以轻松地按名称访问和打印列。但是,当我将矩阵传递给用户定义的模块时,模块内的列名会消失(要运行模块,请取消注释先前 proc iml 中的行)
proc iml;
start myModule(MatrixWithHeader);
print MatrixWithHeader;
print (MatrixWithHeader[,"a"]);
finish myModule;
store module=myModule;
run;
我收到以下错误:
ERROR: (execution) Character argument should be numeric.
如何通过名称访问模块中的矩阵列?
按列号访问会使代码不灵活。可能的解决方法可能是将列名向量作为参数传递并在模块内运行 mattrib。但是,mattrib 的重复很麻烦,在这种情况下,我需要从 myMatrix 中提取 colnames,因为它是由一段很长的代码定义的(不像示例中那样),并且名称向量不可用。
提前致谢,
亚历克斯
解决了
感谢您的解决方案。