Stata:如何分隔本地宏的元素
我试图找出一种划分本地宏元素的方法,这样我就可以根据每个元素在宏中的位置来引用它们。例如,在下面的本地宏Stata:如何分隔本地宏的元素,stata,Stata,我试图找出一种划分本地宏元素的方法,这样我就可以根据每个元素在宏中的位置来引用它们。例如,在下面的本地宏列表\u 1中,通过在整个列表周围添加“”“”并在每个元素周围包含“”,Stata将识别“项目1”是列表中的第一个元素,“项目2”是第二个元素,依此类推 loc list_1 `" "item 1" "item 2" "item 3" "' loc n: word count `list_1' forval i=1/`n' { loc element `: word `i' of `lis
列表\u 1
中,通过在整个列表周围添加“”“”并在每个元素周围包含“”,Stata将识别“项目1”是列表中的第一个元素,“项目2”是第二个元素,依此类推
loc list_1 `" "item 1" "item 2" "item 3" "'
loc n: word count `list_1'
forval i=1/`n' {
loc element `: word `i' of `list_1''
}
但是,当您的元素列表包含“”时,如下面的示例所示,Stata将不会将这些元素识别为单个元素
loc list_1 `" "inlist(var1,"a","b","c")" "inlist(var1,"e","f","g")" "'
我想让Stata将
inlist(var1,“a”、“b”、“c”)
识别为列表中的第一个元素,将inlist(var1,“e”、“f”、“g”)
识别为列表中的第二个元素。关于我如何才能做到这一点,有什么想法吗 我认为,除了最里面的双引号外,其他所有引号都必须是复合引号。以下
local list_1 `" `"inlist(var1,"a","b","c")"' `"inlist(var1,"e","f","g")"' "'
foreach word of local list_1 {
display `"=== `word' ==="'
}
屈服
=== inlist(var1,"a","b","c") ===
=== inlist(var1,"e","f","g") ===
复合双引号开始和结束:
loc list_1 `"inlist(var1,"a","b","c") inlist(var1,"e","f","g")"'
forval i = 1/2 {
display `"`:word `i' of `list_1''"'
}
// or
foreach word of local list_1 {
display `"`word'"'
}
如果你使用
loc list_1 `" "inlist(var1,"a","b","c")" "inlist(var1,"e","f","g")" "'
复合引号稍后将被剥离,导致四个片段被确定为
inlist(var1,
a","b","c")"
inlist(var1,
e","f","g")"
后者和
loc list_1 "inlist(var1,"a","b","c")" "inlist(var1,"e","f","g")"
用你的例子导致同样不想要的结果。鉴于您的设置,Stata正在尽最大努力
请注意,即使这样也适用于您:
loc list_1 inlist(var1,"a","b","c") inlist(var1,"e","f","g")
复合双引号必须为左单引号-双引号开头,双引号-右单引号结尾。你的最后一行代码是错误的,这对Stata来说没有什么特别的意义。NB不是STATA。对不起-那是一种类型。我已经纠正了上面的错误,复合双引号可以嵌套在其他同类中。主要的一点是可以区分左右同胞,因此允许嵌套。实际上,一旦你有了多层引号,你就应该重写代码。例如,我看到Stata程序员将不同的字符串打包到一个本地宏中,但却很难将它们逐个取出,这是完全不必要的。