2

proc iml我在组合,if/then和时遇到问题call symputx。如果我运行以下代码:

proc iml;

call symputx("noif",3);
a=1;
b=&noif;                              /* 1) : works*/
if a=1 then call symputx("withif",1);
if a=1 then print a;                  /* 2) : works */
c=&withif;                            /* 3) : doesn't work */
quit;
%put &withif;                         /* 4) : works */
  • 1) 工作(和 SAS/IML 文档)显示我可以call symputx使用proc IML

  • 2) 工作(和 SAS/IML 文档)显示我可以if/then使用proc IML

  • 3)因此无法正常工作必须是由于结合这三个语句时的某些问题。

  • 但是 4) 工作显示以call symputx("withif",1)某种方式理解。

有条件地定义内部宏变量的正确方法是什么proc iml

4

1 回答 1

2

Rick Wicklin 在他的博客上回答了我的问题。基本上,我需要else在我的块之后添加空语句,if/then以便 IML 知道它们已经完成。

于 2014-05-21T13:43:59.280 回答