Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 循环多个局部变量_Loops_Stata_Locals - Fatal编程技术网

Loops 循环多个局部变量

Loops 循环多个局部变量,loops,stata,locals,Loops,Stata,Locals,我有自动数据集,想创建几个条形图: sysuse auto, clear local mpg "22 20 17" local titles "Title1 Title2 Title3" local path "twentytwo twenty seventeen" foreach x of local mpg { foreach y of local titles { foreach z of local path {

我有自动数据集,想创建几个条形图:

    sysuse auto, clear
        local mpg "22 20 17"
        local titles "Title1 Title2 Title3"
        local path "twentytwo twenty seventeen"

 foreach x of local mpg {
 foreach y of local titles {
 foreach z of local path {
            keep if mpg==`x' & foreign==0
            egen hv_rank=rank(price)
        # delimit ;
        graph bar price,
            over (make, sort(hv_rank) reverse label(labsize(vsmall)))
            ytitle("")
            horizontal title("`y'", size(medium))
            ;
        # delimit cr
            graph save "$dir_gphs\mpg`z'f0-bal.gph", replace
            drop hv_rank
            sysuse auto, clear
            }
           }
          }
我不想为我的3个本地人的“值”的每一个可能组合创建条形图,而是希望有
如果x=22
,然后是
y=Title1
然后是
z=twinty2
。同样地
如果x=20
那么
y=Title2
z=20


这一定是个简单的问题。我想我的搜索到目前为止还没有给我带来任何有用的结果,因为我不知道这个问题的正确词汇

以下是我将如何处理这个问题

. local mpg 22 20 17

. local titles `" "Title 1" "Title 2" "Title 3" "'

. local path twentytwo twenty seventeen

. 
. forvalues i = 1/3 {
  2.         local x : word `i' of `mpg'
  3.         local y : word `i' of `titles'
  4.         local z : word `i' of `path'
  5.         display `" `x' --- `y' --- `z' "'
  6.         }
 22 --- Title 1 --- twentytwo 
 20 --- Title 2 --- twenty 
 17 --- Title 3 --- seventeen 
或者

. local set1 22 "Title 1" twentytwo

. local set2 20 "Title 2" twenty

. local set3 17 "Title 3" seventeen

. forvalues i = 1/3 {
  2.         local x : word 1 of `set`i''
  3.         local y : word 2 of `set`i''
  4.         local z : word 3 of `set`i''
  5.         display `" `x' --- `y' --- `z' "'
  6.         }
 22 --- Title 1 --- twentytwo 
 20 --- Title 2 --- twenty 
 17 --- Title 3 --- seventeen 

下面是我将如何处理这个问题

. local mpg 22 20 17

. local titles `" "Title 1" "Title 2" "Title 3" "'

. local path twentytwo twenty seventeen

. 
. forvalues i = 1/3 {
  2.         local x : word `i' of `mpg'
  3.         local y : word `i' of `titles'
  4.         local z : word `i' of `path'
  5.         display `" `x' --- `y' --- `z' "'
  6.         }
 22 --- Title 1 --- twentytwo 
 20 --- Title 2 --- twenty 
 17 --- Title 3 --- seventeen 
或者

. local set1 22 "Title 1" twentytwo

. local set2 20 "Title 2" twenty

. local set3 17 "Title 3" seventeen

. forvalues i = 1/3 {
  2.         local x : word 1 of `set`i''
  3.         local y : word 2 of `set`i''
  4.         local z : word 3 of `set`i''
  5.         display `" `x' --- `y' --- `z' "'
  6.         }
 22 --- Title 1 --- twentytwo 
 20 --- Title 2 --- twenty 
 17 --- Title 3 --- seventeen 

正如你所说,你真的想要一个单循环。认识到这取决于经验,而不是找到一些文档

我无法测试它,因为它取决于您的本地目录结构和未定义的全局宏,所以您的示例是不可复制的。我附带作了一些简化

如果单个元素包含空格,则需要双引号来绑定

sysuse auto, clear

forval j = 1/3 
    local x : word `j' of 22 20 17
    local title: word `j' of Title1 Title2 Title3
    local path: word `j' of twentytwo twenty seventeen 

    graph bar price if mpg==`x' & foreign==0   ///
    over(make, sort(1) reverse label(labsize(vsmall))) ///
    ytitle("") horizontal title("`title'", size(medium)) 

    graph save "$dir_gphs\mpg`path'f0-bal.gph", replace
}

正如你所说,你真的想要一个单循环。认识到这取决于经验,而不是找到一些文档

我无法测试它,因为它取决于您的本地目录结构和未定义的全局宏,所以您的示例是不可复制的。我附带作了一些简化

如果单个元素包含空格,则需要双引号来绑定

sysuse auto, clear

forval j = 1/3 
    local x : word `j' of 22 20 17
    local title: word `j' of Title1 Title2 Title3
    local path: word `j' of twentytwo twenty seventeen 

    graph bar price if mpg==`x' & foreign==0   ///
    over(make, sort(1) reverse label(labsize(vsmall))) ///
    ytitle("") horizontal title("`title'", size(medium)) 

    graph save "$dir_gphs\mpg`path'f0-bal.gph", replace
}

断裂本质上,答案是一样的。因为有一些下摆,我就让我的站着。是的,我们打成平局。我们需要浏览器的插件来告诉对方我们在看什么URL。让我来说明我的问题,因为我更喜欢我的第二个例子,离原始问题稍微远一点,因为它比原始问题更适合于添加另一组值。这两个例子都演示了在多词标题周围使用双引号,第一个例子演示了如何避免在单个宏中放置多个引号项的微妙问题。非常感谢Nick和William。我基本上使用了Williams解决方案的第一个版本。本地标题中的双引号允许我在标题中使用空格,这对我也有很大帮助。快!本质上,答案是一样的。因为有一些下摆,我就让我的站着。是的,我们打成平局。我们需要浏览器的插件来告诉对方我们在看什么URL。让我来说明我的问题,因为我更喜欢我的第二个例子,离原始问题稍微远一点,因为它比原始问题更适合于添加另一组值。这两个例子都演示了在多词标题周围使用双引号,第一个例子演示了如何避免在单个宏中放置多个引号项的微妙问题。非常感谢Nick和William。我基本上使用了Williams解决方案的第一个版本。本地标题中的双引号允许我使用标题空格,这对我也有很大帮助。