2015-01-09 2 views
0

В SAS/IML можно изменить переменную, если доступен только макрос с его именем? Использование symget на левой стороне производит ошибку:SAS IML Использовать символ на левой стороне

proc iml; 
    variable = 0; 
    call symput ('macVar', 'variable'); 
/* &macVar = 1;*/ 
    symget('macVar') = 1; 
    print variable; 
quit; 

ERROR 180-322: Statement is not valid or it is used out of proper order. 

В & -знаке работает, но код в сделай петли и symget должен быть использован.

Проблема связана с задачей написать функцию, которая принимает переменное количество аргументов и обрабатывает их в нескольких do-loops. Это связано со следующими вопросами:

SAS IML use of Mattrib with Macro (symget) in a loop

SAS IML pass reference to variable defined in macro

Loop over names in SAS-IML?

В других языках (R, C++, Java, Matlab, и т.д ..) задача решается с помощью абстракция.

Идеи?


решаемые

Спасибо большое. Полезная статья.

ответ

0

Используйте подпрограмму Valset:

call valset(symget('macVar'), 1); 

Вы найдете статью "Read hundreds of data sets into matrices." полезным, так как многие из ваших вопросов примерно схожи.

Смежные вопросы