全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6182 10
2013-10-14
各位大神们,我现在遇见一个看似很简单却让我很头疼的问题。如下代码:
%macro test(type=);
%if &type=AR(1) %then %do;
  %let model=Yes;
%end;
%else %do;
  %let model=No;
%end;
%put &model;
%mend;
%test(type=AR(1));
其实很简单,我就是想用一个宏去输出模型的参数。
1)但是这个语句提示:ERROR: 需要的操作在以下的表达式中没有找到: &type=AR(1)
2)然后我想是不是因为含有括号的原因,于是我使用%str(AR(1)),但是效果一样。
3)接着我就用 %test(type=“AR(1)”),其中判断条件也换成了%if &type=“AR(1)” %then %do 接着没有报错但是没有put 任何信息,我再运行一次就出现如下错误:ERROR:条目锁定不可用与 TEST1.MACRO(目录 work.SASMACR)由DMS Process锁定/ 条目TEST1.MACRO 已经在目录 WORK.SASMACR中存在了。
4)迫于无奈我使用 %test(type=%str(“AR(1)”)),其中判断条件也换成了%if &type=%str(“AR(1)” ) %then %do
结果成功了,其实我不太理解为什么会是这样?

求高手按照我的序号1)-4) 解答。。。。。。。。十分感谢啊!!!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-10-15 09:29:36
折腾了半天没想法,等高人解释吧

另外,如果传参的时候把括号去掉的话就不会有这个问题了
所以简单的方法就是变通下算了,呵呵
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-15 10:56:43
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-15 11:35:21
我认为出现ERROR的根源在于AR(1)中的左括号,如果让SAS把左括号当成一个普通的字符就应该不会有问题了。
%macro test(type=);
%if &type=AR%quote(()1) %then %do;
  %let model=Yes;
%end;
%else %do;
  %let model=No;
%end;
%put &model;
%mend;
%test(type=AR%quote(()1));

当然这里用%quote(AR(1))也没有问题,不过%str()是不可以的,因为%quote()是在宏执行的时候起作用,而%str()不是。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-30 10:25:08
pobel 发表于 2013-10-15 11:35
我认为出现ERROR的根源在于AR(1)中的左括号,如果让SAS把左括号当成一个普通的字符就应该不会有问题了。
% ...
太感谢学科带头人了噢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-30 10:35:58
pobel 发表于 2013-10-15 11:35
我认为出现ERROR的根源在于AR(1)中的左括号,如果让SAS把左括号当成一个普通的字符就应该不会有问题了。
% ...
因为%quote()是在宏执行的时候起作用,而%str()不是

这个是什么意思啊?说%str()在宏执行的时候就不起作用了?还是?比较困惑求解,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群