我正在尝试使用local更早使用local的值。一个例子:我想定义" final"我希望它包含" var1 var2"。但是,我想定义" temp"首先,在final的定义中重用其内容。 这是我试过的:
local temp "var2"
local final "var1 " `temp'
谁能告诉我我做错了什么?
答案 0 :(得分:2)
一个有效的例子:
// 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
。