我在Stata的input
命令中发现了这种奇怪的行为。
当您将本地宏作为参数传递给一个变量或多个变量时,input
命令会出现此错误:
'`'不能读为数字
以下两个例子给出了同样的错误:
clear
local nums 1 1 1
input a b c
`nums'
end
clear
local num 1
input a b c
1 1 `num'
end
有没有办法将宏传递到input
命令?
答案 0 :(得分:1)
这不会将宏传递给输入命令本身,但它确实达到了你想要的结果,所以这可能有助于你想要做什么?
一般的想法是将变量的值设置为local,然后拆分本地(类似于Excel中的text-to-column按钮)。
clear
local nums "1 1 1"
foreach n of local nums {
if "`nums_2'" == "" local nums_2 "`n'"
else local nums_2 = "`nums_2'/`n'"
}
set obs 1
gen a = "`nums_2'"
split a, parse("/") gen(b) destring
drop a
答案 1 :(得分:1)
这实际上主要是对Aaron Wolf答案的评论,但是这段代码使得适合身体评论太尴尬了。
考虑到本地的东西,另一种方法是
clear
local num "1 1 1"
set obs 1
foreach v in a b c {
gettoken this num : num
gen `v' = `this'
}
当然,有很多方法可以将11 1变为三个变量。