我发现以下问题/答案,我认为我想做的事情:https://www.stata.com/statalist/archive/2009-09/msg00449.html
但是,我不清楚所有这些内容的发生情况,并希望更好地理解。解决方案的代码如下:
unab vars : var1-var30
local nvar : word count `vars'
forval i = 1/`nvar' {
forval j = 1/`=`i'-1' {
local x : word `i' of `vars'
local y : word `j' of `vars'
generate `x'X`y' = `x' * `y'
}
}
我不明白第4行的内容是什么:``= i'-1'
。
i指的是集合{1,...,n}中的数字,但我不明白等于或-1正在做什么。我的假设是-1以某种方式删除了自己的观察,但我不清楚。任何解释都将不胜感激。
答案 0 :(得分:1)
假设您的本地宏i
在一定范围内变化且您希望其值减1.您可以随时执行此操作
local j = `i' - 1
然后参考j
。您也可以动态执行此操作:
`= `i' - 1'
在
中 `= '
Stata将评估表达式,此处
`i' - 1
并在命令行中替换该表达式的结果。
您也可以使用标量来执行此操作:
scalar foo = 42
然后参考
`= foo'
然而,请注意。标量名称和变量名称占用相同的名称空间。
`= scalar(foo)'
消除歧义,并且在任何情况下都可以说是好的风格。