【问题标题】:SAS IML Use symget on left sideSAS IML 在左侧使用 symget
【发布时间】:2015-01-09 08:41:37
【问题描述】:

在 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 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 等)中,任务是在抽象的帮助下解决的。

想法?


已解决

非常感谢。 有用的文章。

【问题讨论】:

    标签: macros module variable-assignment sas-iml


    【解决方案1】:

    使用 VALSET 子例程:

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多