SAS IML在左侧使用symget

时间:2015-01-09 08:41:38

标签: macros module variable-assignment sas-iml

在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循环中处理它们的函数的任务。它与以下问题有关:

SAS IML use of Mattrib with Macro (symget) in a loop

SAS IML pass reference to variable defined in macro

Loop over names in SAS-IML?

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

想法?


解决

非常感谢。 有用的文章。

1 个答案:

答案 0 :(得分:0)

使用VALSET子程序:

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

您发现文章"Read hundreds of data sets into matrices."很有帮助,因为您的许多问题都与此类似。