请帮助解决这个问题,
如何根据SAS中的宏变量定义具有灵活尺寸的二维数组?
%LET Dim =& a。*& b。;
ARRAY Spline {& a。,& b。} B1-B& Dim .;
我尝试使用上面的代码,但它给出了这些错误:
http://s17.postimg.org/v5nkxw8hb/Sans_titre.png
感谢您的帮助!
答案 0 :(得分:0)
在宏变量分配期间,你不能有数学表达式。
所以如果a = 4且b = 5
%LET Dim =& a。*& b。;
解析为DIM =" 4 * 5"作为字符串,但你想要20。
要做到这一点,你必须在datastep中进行数学运算:
data _null_;
temp= &a * &b;
call symputx('DIM', temp);
ARRAY Spline{&a.,&b.} B1-B&DIM;
run;
我也想知道你的截图,似乎B = 5-1(作为字符串),所以我猜你在分配b时已经做了一个数学运算,哪个失败... %let b = 5-1;解析为字符串" 5-1",而不是4 ...
所以在你的例子中,一切都解析为:
ARRAY Spline{4,5-1} B1-B4*5-1;
我想你想要
ARRAY Spline{4,4} B1-B16;
所以在datastep中分离所有数学运算......