嵌套循环中需要大括号错误
Brace required error in nested loop
我正在使用 Stata 中的嵌套循环处理我的第一个循环,但无法将代码获取到 运行。
这是我的资料:
*identify anti policies of contiguous states
forvalues yr = 1983/1993 {
foreach state in Alabama Alaska Arizona Arkansas California Colorado
Connecticut Delaware Florida Georgia Hawaii
Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland
Massachusetts Michigan Minnesota Mississippi
Missouri Montana Nebraska Nevada NewHampshire NewJersey NewMexico NewYork
NorthCarolina NorthDakota Ohio
Oklahoma Oregon Pennsylvania RhodeIsland SouthCarolina SouthDakota Tennessee
Texas Utah Vermont Virginia
Washington WestVirginia Wisconsin Wyoming {
gen 'st'_anti_'yr'=.
replace 'st'_anti_'yr'=1 if 'st'_c==1 & anti["st"_"yr"]==1
replace 'st'_anti_'yr'=0 if 'st'_c==0 | anti["st"_"yr"]==0
}
}
当我 运行 代码时,我得到错误:
r(100) or r(100) { required
无论我如何修改代码(添加或删除 ' 或 " 等),都会出现此错误。
您需要在每一行的末尾添加 ///
以便 Stata 可以将所有状态视为一个连续的行。将所有状态保存在本地宏中,然后在循环中使用它也是一个好习惯。
例如:
local states Alabama Alaska Arizona Arkansas California Colorado Connecticut ///
Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky ///
Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi ///
Missouri Montana Nebraska Nevada NewHampshire NewJersey NewMexico NewYork ///
NorthCarolina NorthDakota Ohio Oklahoma Oregon Pennsylvania RhodeIsland ///
SouthCarolina SouthDakota Tennessee Texas Utah Vermont Virginia Washington ///
WestVirginia Wisconsin Wyoming
forvalues yr = 1983 / 1993 {
foreach state of local states {
display "`yr' `state'"
}
}
此外,在您的示例中,您似乎错误地指定了本地宏 state
并忘记为本地宏使用引号 yr
:
forvalues yr = 1983 / 1993 {
foreach state of local states {
generate `state'_anti_`yr'=.
replace `state'_anti_`yr'=1 if `state'_c==1 & anti[`state'_`yr']==1
replace `state'_anti_`yr'=0 if `state'_c==0 | anti[`state'_`yr']==0
}
}
我正在使用 Stata 中的嵌套循环处理我的第一个循环,但无法将代码获取到 运行。
这是我的资料:
*identify anti policies of contiguous states
forvalues yr = 1983/1993 {
foreach state in Alabama Alaska Arizona Arkansas California Colorado
Connecticut Delaware Florida Georgia Hawaii
Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland
Massachusetts Michigan Minnesota Mississippi
Missouri Montana Nebraska Nevada NewHampshire NewJersey NewMexico NewYork
NorthCarolina NorthDakota Ohio
Oklahoma Oregon Pennsylvania RhodeIsland SouthCarolina SouthDakota Tennessee
Texas Utah Vermont Virginia
Washington WestVirginia Wisconsin Wyoming {
gen 'st'_anti_'yr'=.
replace 'st'_anti_'yr'=1 if 'st'_c==1 & anti["st"_"yr"]==1
replace 'st'_anti_'yr'=0 if 'st'_c==0 | anti["st"_"yr"]==0
}
}
当我 运行 代码时,我得到错误:
r(100) or r(100) { required
无论我如何修改代码(添加或删除 ' 或 " 等),都会出现此错误。
您需要在每一行的末尾添加 ///
以便 Stata 可以将所有状态视为一个连续的行。将所有状态保存在本地宏中,然后在循环中使用它也是一个好习惯。
例如:
local states Alabama Alaska Arizona Arkansas California Colorado Connecticut ///
Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky ///
Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi ///
Missouri Montana Nebraska Nevada NewHampshire NewJersey NewMexico NewYork ///
NorthCarolina NorthDakota Ohio Oklahoma Oregon Pennsylvania RhodeIsland ///
SouthCarolina SouthDakota Tennessee Texas Utah Vermont Virginia Washington ///
WestVirginia Wisconsin Wyoming
forvalues yr = 1983 / 1993 {
foreach state of local states {
display "`yr' `state'"
}
}
此外,在您的示例中,您似乎错误地指定了本地宏 state
并忘记为本地宏使用引号 yr
:
forvalues yr = 1983 / 1993 {
foreach state of local states {
generate `state'_anti_`yr'=.
replace `state'_anti_`yr'=1 if `state'_c==1 & anti[`state'_`yr']==1
replace `state'_anti_`yr'=0 if `state'_c==0 | anti[`state'_`yr']==0
}
}