[問題] SAS-巨集內使用IML產生錯誤訊息

看板Statistics作者 (keep going)時間14年前 (2010/08/17 00:12), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
在SAS巨集內使用Proc IML產生下列錯誤訊息 ERROR: (execution) Matrix has not been set to a value. operation : [ at line 28272 column 99 operands : CUM_DIV_PV, I, DIV CUM_DIV_PV 758 rows 1 col (numeric) I 0 row 0 col (type ?, size 0) 搜尋之後仍無法順利排除此錯誤 想請問各位先進如何解決此一問題. 我的巨集是要從原本完整dataset中, 透過輸入公司代碼, 挑出相同公司代碼的較小資料集, 之後在針對此較小的資料進行矩陣運算. 下面簡易列出我的程式, 希望能夠得到先進們的指點, 謝謝! %MACRO DivPV(Num); %DO I = 1 %TO &Num; DATA _NULL_; set firmlist; IF _n_= &I Then Do; CALL SYMPUT('ID', firmid); END; RUN; Data subset; set fulldata; where firmid = &ID; run; proc IML; start main; use subset var _all_ ; read all into date_S0; n2 = nrow(date_S0); cum_div_pv = repeat(0,n2,1); ... 之後的運算都是為了求出cum_div_pv finish main; run main; quit; %END; %MEND DivPV; %DivPV(2138); run; 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.111.160

08/17 00:50, , 1F
給你個建議,用巨集作迴圈跑iml,很難看出錯誤在哪。
08/17 00:50, 1F

08/17 00:51, , 2F
先以I等於某個數字,跑一遍程式,比較好看出城是錯在哪
08/17 00:51, 2F

08/17 00:53, , 3F
從錯誤訊息來看,很像是某個矩陣運算過程中不合法。
08/17 00:53, 3F

08/17 00:54, , 4F
不確定問題是不是剛好在省略的那段。
08/17 00:54, 4F

08/17 11:58, , 5F
要檢查矩陣的運算吧 也許是在矩陣計算的行列不合
08/17 11:58, 5F
文章代碼(AID): #1CQMDmhE (Statistics)