为什么使用 foreach 循环会出现无效语法错误?
Why do I get an invalid syntax error with a foreach loop?
我想要 rename
以 intensity
开头的变量名称。我收到一个无效的语法,r(198)
错误,代码如下。
#delimit;
foreach VAR of varlist intensity* {;
local NEW = subinstr("`VAR'", "intensity", "int");
rename `VAR' `NEW';
};
你这里用的分隔符;
不咬人,我就无视了。
错误出现在 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
。
我想要 rename
以 intensity
开头的变量名称。我收到一个无效的语法,r(198)
错误,代码如下。
#delimit;
foreach VAR of varlist intensity* {;
local NEW = subinstr("`VAR'", "intensity", "int");
rename `VAR' `NEW';
};
你这里用的分隔符;
不咬人,我就无视了。
错误出现在 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
。