Конфликт глобального макроса и цикла - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь автоматизировать процесс запуска группы файлов с последовательным именем, манипулировать ими всеми одинаково и затем сохранять их.

Я думал, что использование цикла forvalues с глобальным макросом будет лучшим способом сделать это в Stata.

Мой код выглядит примерно так:

global s=1988
forvalues i=${s}/2018 {
import excel "${s}.xlsx", sheet("Data") firstrow clear 
.
.
.
save ${s}, replace
}

Однако, это дает мне ошибку:

ошибка программы: код следует в той же строке, что и открытая скобка

Кажется, что Stata читает фигурную скобку для глобального макроса в качестве начала цикла. Я пробовал разные варианты цикла, чтобы обойти это, но безрезультатно. Поскольку я использую clear внутри цикла, я не могу использовать локальный макрос или он входит в бесконечный цикл.

1 Ответ

0 голосов
/ 08 сентября 2018

Я сталкивался с этой проблемой раньше. По какой-то причине Stata запутывается в количестве фигурных скобок. Если вы удалите их, цикл forvalues будет работать как положено:

global s = 1988
forvalues i = $s / 2018 {
    display `i'
}

1988
1989
1990
1991
.
.
.
2016
2017
2018

Вы также можете вложить глобальный макрос s в локальный макрос:

local s = ${s}
forvalues i = 1 / `s' {
    display `i'
}
...