我想在proc iml中创建全局变量,指定另一个过程中的步骤数:
%global iterations;
proc iml;
use data;
read all var _CHAR_ into data;
row = nrow(data);
%let iterations = row;
quit;
data _null_;
do i=1 to &iterations;
put i=;
end;
run;
但是这样我最终得到一个错误:“无效的DO循环控制信息,INITIAL或TO表达式丢失或者BY表达式丢失,零或无效”。即使我尝试执行
%put &iterations;
我得到了
row
响应而不是对应于数据行的数字的值。请告诉我如何在程序中传递这些信息。感谢。
答案 0 :(得分:2)
试试这个:
call symput("iterations_glob", iterations);
将值分配给行变量后,在proc iml
中:
proc iml;
use data;
read all var _CHAR_ into data;
row = nrow(data);
iterations = row;
call symput("iterations_glob", iterations);
quit;
这个新的 iterations_glob 变量应该在数据步骤中看到。