2014-11-04 7 views
1

Я пытаюсь переименовать список переменных, используя цикл. Мой код выглядит следующим образомStata: Назначение диапазона значений макросу

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12 
local k 2 4 6 8 10 12 14 16 18 20 22 24 26 28 
local n: word count `x' 
forvalues i=1/`n' { 
local a : word `i' of `x' 
local b : word `i' of `k' 
rename v`b' num`a' 
} 

мне было интересно, можно ли назначить диапазон для макросъемки к без написания вручную. Обратите внимание, что дельта между двумя значениями не одна.

+0

Вы не закрыли предыдущую нить, которую вы начали. Принятие ответа даст вам некоторую репутацию. –

ответ

2

В вашем случае вам просто нужны оригинальные суффиксы 2 (2) 28, поэтому достаточно удвоения 1 (1) 14. В противном случае help tokenize.

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12 
tokenize "`x'" 
local n: word count `x' 
forvalues i = 1/`n' { 
    local I = 2 * `i' 
    rename v`I' num``i'' 
} 

Другие арифметические изменения так же просты. Например, 3 (2) ... is

local I = 2 * `i' + 1 
+0

Извините, я не смог закрыть последний вопрос. Я посмотрел на токенизацию. но я не могу понять, как это сделать, если дельта или начальное значение разные. Например, что мне делать, если мне нужны значения 3,5,7 .. в моем макросе. Спасибо – Rodrigo

+0

См. Отредактированный ответ. –

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