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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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_Foreach_Stata - Fatal编程技术网

Loops 删除具有相似名称的变量子集

Loops 删除具有相似名称的变量子集,loops,foreach,stata,Loops,Foreach,Stata,我必须导入和更改一大组csv文件。在这个过程中的某个时候,我想使用以下代码 local vlist materialcost* costofemployees* city country foreach v in vlist{ capture drop `v' } 但是,本地人不允许像materialcost* 或者,如果我尝试 foreach v of var materialcost* costofemployees* city cou

我必须导入和更改一大组csv文件。在这个过程中的某个时候,我想使用以下代码

    local vlist materialcost* costofemployees* city country 

    foreach v in vlist{
        capture drop  `v'
    }
但是,本地人不允许像
materialcost*
或者,如果我尝试

    foreach v of var materialcost* costofemployees* city country {
        capture drop  `v'
    }
我遇到了一个问题,因为它无法始终找到名称中带有
materialcost
的变量,从而引发了一个错误


因此,我希望Stata删除所有以
materialcost
开头的变量,如果它们实际存在于数据中

首先,当地人不允许像
materialcost*
这样的开放式描述的说法在事实上和原则上都是不正确的

我只是在斯塔塔做的:

. local vlist materialcost* costofemployees* city country

. di "`vlist'"
materialcost* costofemployees* city country
因此,分配给当地人的任务在实践中是可行的。原则是,本地人只是文本的容器,不知道文本可能是什么(或意味着什么),超过长度限制,不咬这里,或通常

你这么说的原因可能是这并不是你想要的

foreach v in vlist {
   capture drop  `v'
}
这种语法是合法的,但不是让
foreach
处理刚刚定义的本地文件内容的方法。这个循环可以归结为

capture drop vlist 
除非
vlist
是数据集中的变量名,否则它将不起任何作用

你的主要问题是这个。如果你说

foreach v of var materialcost* costofemployees* city country { 
然后,
var
关键字后面的内容实际上是一个变量列表,如果不是这样,
foreach
会在不进入循环的情况下将您抛出。它不会忽略异常。循环中的
捕获
也帮不上忙;斯塔塔从来没有走那么远。然而,我的猜测是

foreach v in materialcost* costofemployees* city country {
    capture drop  `v'
}

对于您来说,应该是这样的:(a)您不会对可能存在的变量做出错误的声明;(b)
capture
捕获
drop
如果这些变量不存在将引发的任何错误

首先,当地人不允许像
materialcost*
这样的开放式描述的说法在事实上和原则上都是不正确的

我只是在斯塔塔做的:

. local vlist materialcost* costofemployees* city country

. di "`vlist'"
materialcost* costofemployees* city country
因此,分配给当地人的任务在实践中是可行的。原则是,本地人只是文本的容器,不知道文本可能是什么(或意味着什么),超过长度限制,不咬这里,或通常

你这么说的原因可能是这并不是你想要的

foreach v in vlist {
   capture drop  `v'
}
这种语法是合法的,但不是让
foreach
处理刚刚定义的本地文件内容的方法。这个循环可以归结为

capture drop vlist 
除非
vlist
是数据集中的变量名,否则它将不起任何作用

你的主要问题是这个。如果你说

foreach v of var materialcost* costofemployees* city country { 
然后,
var
关键字后面的内容实际上是一个变量列表,如果不是这样,
foreach
会在不进入循环的情况下将您抛出。它不会忽略异常。循环中的
捕获
也帮不上忙;斯塔塔从来没有走那么远。然而,我的猜测是

foreach v in materialcost* costofemployees* city country {
    capture drop  `v'
}

对于您来说,应该是这样的:(a)您不会对可能存在的变量做出错误的声明;(b)
capture
捕获
drop
如果这些变量不存在将引发的任何错误

materialcost*
不会拾取名称中包含
materialcost
的所有变量,只拾取以该方式开头的变量。
materialcost*
不会拾取名称中包含
materialcost
的所有变量,只拾取以该方式开头的变量。感谢您的详细解释。我最初的说法确实不正确。当我试着自己展示本地图片时,我忘记了导致我错误结论的“”号。谢谢你的详细解释。我最初的说法确实不正确。当我试着自己显示本地数据时,我忘记了导致错误结论的“”号。