Continuing the conversation re: representing an IML list structure as a matrix, how do I determine the position of the item L3_4 in the following example:
proc iml ; package load ListUtil ;
L = [ #'L1'=[ #'L1_1' = [ #'L1_2' = 'item L1_2' ] ]
, #'L2'=[ #'L2_1' = 'item L2_1']
, #'L3'=[ #'L3_1 '= [ #'L3_2' = [ #'L3_3' = [ #'L3_4'= 'item L3_4' ] ] ] ]
] ;
call struct(L) ;
call listprint( L ) ;
quit ;
If I want to delete item L$'L3'$'L3_1'$'L3_2'$'L3_3'$'L3_4', how do I use ListDeleteItem() to do this? How do I represent the position as a numeric matrix of indices or a character matrix of item names? Is my confusion due to the fact that I am trying to delete an item from a sublist? If so, how do I delete an item from a sublist?
I feel like we might have had this conversation already?
Yes, I think your confusion is because you are trying to directly delete from a sublist. You can't use ListDeleteItem for that. The easiest way to delete an item from a sublist is to use ListGetSubItem with the 'd' flag:
proc iml ; package load ListUtil ;
L = [ #'L1'=[ #'L1_1' = [ #'L1_2' = 'item L1_2' ] ] ];
call struct(L) ;
item = ListGetSubItem(L, {'L1' 'L1_1' 'L1_2'}, 'd' ); /* get value; delete from the list */
free item; /* optional: completely delete the item */
call struct(L) ;
I feel like we might have had this conversation already?
Yes, I think your confusion is because you are trying to directly delete from a sublist. You can't use ListDeleteItem for that. The easiest way to delete an item from a sublist is to use ListGetSubItem with the 'd' flag:
proc iml ; package load ListUtil ;
L = [ #'L1'=[ #'L1_1' = [ #'L1_2' = 'item L1_2' ] ] ];
call struct(L) ;
item = ListGetSubItem(L, {'L1' 'L1_1' 'L1_2'}, 'd' ); /* get value; delete from the list */
free item; /* optional: completely delete the item */
call struct(L) ;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.