使用本地宏时出现无效的“`”错误

Invalid '`' error when using local macro

我正在按照 this link 中关于如何通过 foreach 循环附加 Stata 文件的说明进行操作。我认为这很简单。

但是,当我尝试在 foreach 循环中引用 datafiles 中的每个 f 时,我收到错误消息:

invalid `

我已经设置了工作目录,数据位于名为 csvfiles 的子文件夹中。我正在尝试使用我的本地宏 datafiles 调用 csvfiles 子文件夹中的每个文件 f,然后将每个文件附加到名为 data.dta.[=23= 的聚合 Stata 数据集]

我在下面包含了我的 do 文件中的代码:

clear
local datafiles: dir "csvfiles" files "*.csv"

foreach f of local datafiles {
    preserve
    insheet using “csvfiles\`f'”, clear
    ** add syntax here to run on each file**
    save temp, replace
    restore
    append using temp
}

rm temp
save data.dta, replace

反斜杠字符对 Stata 有意义:它将阻止对 Stata 具有特殊意义的任何后续字符的解释,特别是左单引号字​​符

` 

不会被解释为指示对宏的引用。

但并非一无所有:Stata 将允许您在任何操作系统的路径名中使用正斜杠字符,而在 Windows 上,Stata 将负责做必须做的事情以安抚 Windows.用

替换你的 insheet 命令
insheet using “csvfiles/`f'”, clear

应该可以解决您的问题。

请注意,您链接的说明正是这样做的;一些代码在路径名中包含反斜杠,但在包含宏的地方,使用正斜杠代替。