0

在 SAS/IML 中,如果只有带有名称的宏可用,是否可以更改变量?在左侧使用 symget 会产生错误:

proc iml;
    variable = 0;
    call symput ('macVar', 'variable');
/*  &macVar = 1;*/
    symget('macVar') = 1;
    print variable;
quit;

ERROR 180-322: Statement is not valid or it is used out of proper order.

&-sign有效,但代码在 do-loop 中并且必须使用symget 。

问题源于编写一个函数的任务,该函数接受可变数量的参数并在几个 do-loop 中处理它们。它与以下问题有关:

SAS IML 在循环中使用带有宏(symget)的 Mattrib

SAS IML 传递对宏中定义的变量的引用

在 SAS-IML 中循环名称?

在其他语言(R、C++、Java、Matlab 等)中,任务是在抽象的帮助下解决的。

想法?


解决了

非常感谢。有用的文章。

4

1 回答 1

0

使用 VALSET 子例程:

    call valset(symget('macVar'), 1);

您可以找到“将数百个数据集读入矩阵”一文。有帮助,因为您的许多问题都是关于类似的。

于 2015-01-09T15:56:14.100 回答