Stata local на основе других местных

Я пытаюсь использовать local со значением более раннего использования local. Пример: я хочу определить "final" и хочу, чтобы он содержал "var1 var2". Однако я хочу сначала определить «temp» и повторно использовать его содержимое в определении final. Вот что я пробовал:

local temp "var2"

local final "var1 " `temp'

Может ли кто-нибудь сказать мне, что я делаю неправильно?


person user1769925    schedule 01.10.2014    source источник
comment
Ты не сделал того, что сказал. Чтобы повторно использовать содержимое локального файла, вы должны обратиться к этому локальному файлу.   -  person Nick Cox    schedule 01.10.2014
comment
Я забыл переименовать ratiovars в temp в примере, извините   -  person user1769925    schedule 01.10.2014
comment
Хорошо, но даже в этом случае вы все еще не объясняете, что именно пошло не так, как вам кажется. Проблема заключается в положении закрывающей кавычки ".   -  person Nick Cox    schedule 01.10.2014


Ответы (1)


Пример, который работает:

// example data
sysuse auto, clear

// what you want
local first weight
local second `first' mpg

// example use of local second
regress price `second'

Редактировать

Чтобы ответить на ваш комментарий:

Да, ваша проблема - двойные кавычки. Однако это не означает, что использование двойных кавычек автоматически приведет к проблемам. Например, это будет работать:

// example data
sysuse auto, clear

// what you want
local first "weight"
local second "mpg  `first'"

// example use of local second
regress price `second'

Двойные кавычки здесь интерпретируются как разделители строк, поэтому они будут удалены. Когда local first ссылается (удаляется) в local second "mpg `first'", макроподстановка будет вставлять weight, а не "weight". Впоследствии, когда local second ссылается (раз)на regress ..., макроподстановка приводит к mpg weight, а не "mpg weight". Так что это все юридический синтаксис.

Ваш пример содержит недопустимый синтаксис. Вы ограничиваете первую часть двойными кавычками, а затем продолжаете с другой частью:

`temp'

Это считается незаконным.

Stata не возражает, если мы опустим двойные кавычки в операторе local, поэтому мой первый пример работает. См. [U] 18.3.4 Макросы и выражения.

См. также http://www.stata.com/statalist/archive/2009-01/msg00282.html и help quotes.

person Roberto Ferrer    schedule 01.10.2014
comment
интересно, так проблема была в двойных кавычках - person user1769925; 01.10.2014