Loops Forvalues循环显示不正确的语法
我想根据给定的变量Loops Forvalues循环显示不正确的语法,loops,stata,Loops,Stata,我想根据给定的变量游戏生成变量名。 例如,如果games为3,则结果为 game1=均匀分布值列表 game2=相同等 虽然类似问题有多个示例和答案,但我不明白为什么我的代码不能产生我想要的结果 Stata显示以下循环的语法错误: set obs 1000 forvalues i = 1(1)games { generate game`i' = runiform() } 在斯塔塔看来,games真的是一个变量吗?一次又一次地保持相同的常数是不必要的,也是低效的 问题是forvalues希望看
游戏生成变量名。
例如,如果games
为3,则结果为
game1
=均匀分布值列表
game2
=相同等
虽然类似问题有多个示例和答案,但我不明白为什么我的代码不能产生我想要的结果
Stata显示以下循环的语法错误:
set obs 1000
forvalues i = 1(1)games {
generate game`i' = runiform()
}
在斯塔塔看来,games
真的是一个变量吗?一次又一次地保持相同的常数是不必要的,也是低效的
问题是forvalues
希望看到数字;它不会动态执行评估。但斯塔塔的其他地方也会这样做
如果您知道只需要3个变量,那么您可以这样做:
clear
set obs 1000
forvalues i = 1/3 {
generate game`i' = runiform()
}
或者你可以这样做:
clear
set obs 1000
local games = 3
forvalues i = 1/`games' {
generate game`i' = runiform()
}
这与我的开头一段并不矛盾。在执行任何命令之前执行所有宏计算;因此,forvalues
看到的是3,而不是本地宏名称
如果你真的在一个变量中保持一个常数,那么这就行了:
clear
gen games = 3
set obs 1000
forvalues i = 1/`=games[1]' {
generate game`i' = runiform()
}
在斯塔塔看来,games
真的是一个变量吗?一次又一次地保持相同的常数是不必要的,也是低效的
问题是forvalues
希望看到数字;它不会动态执行评估。但斯塔塔的其他地方也会这样做
如果您知道只需要3个变量,那么您可以这样做:
clear
set obs 1000
forvalues i = 1/3 {
generate game`i' = runiform()
}
或者你可以这样做:
clear
set obs 1000
local games = 3
forvalues i = 1/`games' {
generate game`i' = runiform()
}
这与我的开头一段并不矛盾。在执行任何命令之前执行所有宏计算;因此,forvalues
看到的是3,而不是本地宏名称
如果你真的在一个变量中保持一个常数,那么这就行了:
clear
gen games = 3
set obs 1000
forvalues i = 1/`=games[1]' {
generate game`i' = runiform()
}
只有定义了游戏
,这才是完整的代码。只有定义了游戏
,这才是完整的代码。