Stata 错误:;太多';)';或';]';使用foreach循环时
当我在Stata中使用Stata 错误:;太多';)';或';]';使用foreach循环时,stata,Stata,当我在Stata中使用foreach循环时,我被一条奇怪的错误消息弄糊涂了 我从一个数据集中收集了几个地名的名称列表,并将它们放在三个本地名中:县,市,市政。然后,我将它们与另一个数据集中的某些名称(parkname)进行“匹配” 前两个运行良好,但对于最后一个本地宏muni,foreach失败并抛出一条奇怪的错误消息。但是,正如您所看到的,我没有在循环体中添加太多的括号:只有两个 那么问题的根源是什么呢?我高度怀疑它源于我构造最后一个局部变量的方式,但我无法找出问题所在 顺便说一句,city1
foreach
循环时,我被一条奇怪的错误消息弄糊涂了
我从一个数据集中收集了几个地名的名称列表,并将它们放在三个本地名中:县
,市
,市政
。然后,我将它们与另一个数据集中的某些名称(parkname
)进行“匹配”
前两个运行良好,但对于最后一个本地宏muni
,foreach
失败并抛出一条奇怪的错误消息。但是,正如您所看到的,我没有在循环体中添加太多的括号:只有两个
那么问题的根源是什么呢?我高度怀疑它源于我构造最后一个局部变量的方式,但我无法找出问题所在
顺便说一句,city1
到city4
指的是四个城市名称的中文字符(Unicode),但由于堆栈溢出不允许使用Unicode字符,所以我将它们替换。我不确定这一事实是否与错误消息有关
import excel province=A city=B county=C using geonamelist.xlsx, clear
*-------------------------
* city and county list
*-------------------------
qui levelsof county , local(county)
qui levelsof city , local(city)
** the municipalities are classified as provincial unit
local muni "city1" "city2" "city3" "city4"
*--------------------------
* Industry Park data
*--------------------------
// Import industry park namelist
import excel order=A province=C class=D parkname=E area_NDRC=F ///
area_MLR=J batch=I using namelist1.xls, clear
drop in 1/1
tempfile provincial
save "`provincial'"
import excel order=A province=C class=D parkname=E area_NDRC=F ///
area_MLR=J batch=I using namelist2.xls,clear
drop in 1/1
append using "`provincial'"
** Matching the county names
gen county = ""
foreach i of local county {
qui replace county = "`i'" if strpos(parkname,"`i'")>0
}
gen city = ""
foreach i of local city {
qui replace city = "`i'" if strpos(parkname,"`i'")>0
}
foreach i of local muni {
qui replace city = "`i'" if strpos(parkname,"`i'")>0
}
sort order
这里的任何内容我们都无法复制,因为您的示例依赖于我们没有的文件。不幸的是,我和(我怀疑)这里很多最活跃的Stata用户都不会阅读或说中文 正如你所说,在语法上没有明显的区别 不过,我不建议这样做:
. local muni "city1" "city2" "city3" "city4"
. mac li
<other stuff listed here>
_muni: city1" "city2" "city3" "city4
所以我唯一的猜测是你得到的信息是宏定义的副作用 谢谢,尼克,这正是我问题的根源。
local muni `" "city1" "city2" "city3" "city4" "'