이런 방법으로 문제를 해결하는 것은 모범 답안은 아닙니다. c1_tr, c2_tr 같은 변수를 만드는 것 자체가 목적이 아니라면, 뒤쪽에서 계속 이 변수들이 등장할 텐데, 배열을 쓰는 것이 반복작업에는 “짱”입니다. 거의 필수적이라고 생각합니다.
어쨌든 IDL에서 이런 상황은 다음과 같이 해결합니다.
for i=1,5 do begin
restore, ‘C:/summer_’+strtrim(string(i),2)+’.sav’
print, ‘C:/summer_’+strtrim(string(i),2)+’.sav’
cmd=’c’+strtrim(string(i), 2)+’_tr = transpose(c’+strtrim(string(i),2)+’,[1,0])’
print, cmd
ret=execute(cmd)
endfor
restore 문에서 파일 이름이 문자열이므로 따옴표 사용하셔야 하고, i가 알아서 문자열로 변환되지 않습니다. 아래쪽에서 사용하신 것처럼 string 함수로 변환 하셔야 합니다. 이것은 파일 이름과 관련한 문제이므로, 문자열 처리로 하는 것이 맞습니다.
IDL 문장을 문자열로 만들어서 이를 실제 실행하는 것은 execute 함수가 하는 일인데, 위와 같이 사용합니다. 필요할 때가 있긴 하지만, execute를 사용하는 것은 처리 속도도 느리고, 일 복잡해 집니다. 배열을 이용해 작업 방향을 전환하시기를 권장합니다.