为什么在foreach循环中收到无效的语法错误?

时间:2019-07-03 05:15:49

标签: stata stata-macros

我想要renameintensity开头的变量名。我收到带有以下代码的无效语法r(198)错误。

#delimit;

foreach VAR of varlist intensity* {;

 local NEW = subinstr("`VAR'", "intensity", "int");
 rename `VAR' `NEW';

 };

1 个答案:

答案 0 :(得分:2)

您在此处使用的定界符;不会引起误解,因此我将忽略它。

使用subinstr()时出错,它必须有四个参数,第四个是要进行替换的数量。参见help subinstr()

这可行(请注意,请使用一个最小的完整可验证示例):

clear 
set obs 1 
generate intensity1 = 1 
generate intensity2 = 2 

foreach VAR of varlist intensity* {
    local NEW = subinstr("`VAR'", "intensity", "int", 1)
    rename `VAR' `NEW'
}

ds

但是完全不需要循环。首先,让我们向后翻转名称,然后说明如何直接更改名称:

rename int* intensity*
rename intensity* int*

有关更多信息,请参见help rename groups