Stata本地基于其他本地

时间:2014-10-01 12:54:08

标签: local stata

我正在尝试使用local更早使用local的值。一个例子:我想定义" final"我希望它包含" var1 var2"。但是,我想定义" temp"首先,在final的定义中重用其内容。 这是我试过的:

local temp "var2"

local final "var1 " `temp'

谁能告诉我我做错了什么?

1 个答案:

答案 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.htmlhelp quotes