2014-04-23 3 views
2

해당 변수의 이름이 local에 포함 된 경우에만 특정 변수에 대한 중괄호로 코드를 실행하는 if 조건을 Stata에 갖고 싶습니다. 예 :변수 이름이 로컬에 포함 된 경우 Stata - run 코드

if (`variable` element of `variablenames_local`) { 
    gen variable2 = variable + 2 
} 

어떻게 Stata에서이 작업을 수행 할 수 있습니까?

답변

2

help extended_fcn에 설명되어있는 확장 매크로 함수를 사용할 수 있습니다. 이 경우 help macrolist은 매우 유용합니다. (내가 대신 나는 보통 help macro 또는 help local을 입력하고 헬프 파일의 링크를 따라, 그 헬프 파일의 이름을 기억하지 않습니다.)

sysuse auto, clear 

local vars "price mpg foreign" 

foreach var of varlist _all { 
    if `: list var in vars' { 
     di "do something smart with `var'" 
    } 
} 

// alternatively: 
foreach var of varlist `vars' { 
    di "do something smart with `var'" 
} 
+0

이 두 번째 대단히 좋은 스타일임을 강조하기 위해 단지이다. 당신이 이야기하고 있지 않은 컨텍스트가있을 수 있지만, 당신이 원하는 변수를 하나씩 선택하는 것은 하나씩 선택하는 것을 능가합니다. –

+0

위의 예에서 @NickCox는 절대적으로 옳습니다. 나는 복잡한 구문 요소를 파싱 할 때 첫 번째 트릭을 간헐적으로 사용했다. –

관련 문제