2013-02-19 89 views
3

图形字符串矢量我想遍历称为country一个字符串矢量,其中包含国家代码,如AFGETH遍历的R中

Stata的代码是这样的:

levelsof country, local(xtry) 
foreach x in local xtry: 
graph command here if xtry=="`x'" 
graph save mygraph 

} 

是否有可比性命令levelsof,还有一个“如果”的数据限制在特定的国家代码,这是一个字符串,从每个图将被创建的语句?

+0

你可能不想像这样循环它。你可能想从'plyr'包中找到'tapply'或'** ply'函数。 – 2013-02-19 07:00:50

+0

根据你想要对数据做什么,有一系列函数将函数应用于列表,列,行等。非常有用替代许多for语句。键入?应用到R控制台。 – N8TRO 2013-02-19 07:01:24

回答

3

你会使用这样的:

for (cn in levels(country)) 
    { 
    if (cn=="x") 
     { 
     <do something> 
     } 
    else 
     { 
     <do something else> 
     } 
    } 

如果要检查多个国家,用户可以使用

if (cn == "x" | cn == "y") 

或也

if (cn %in% c("x", "y", "z")) 
+0

谢谢@ nico !!! – user1259823 2013-02-19 16:14:59

0

顺便说一句,在应用一组函数实际上是一个类似的东西,如果与构建循环不相同的话,那就是apply一组函数是这种循环的包装器,它们专用于不同的数据结构和需求 - 这是一种更循环的循环方式。我不知道速度提升声明有多有效 - 我很怀疑。除此之外,如果我明白你在问什么(我不知道stata),用R对数据进行子集分析可能会更容易,然后为每个子集做几个图。

+0

作为一个Stata人,我确认这个建议与问题的Stata内容相符。我对Stata感兴趣的一面,在我看来,要求如何在R中做某些事情要比翻译Stata代码更好。 R用户的数量显然比知道Stata的合格R用户的数量要大得多!然而,这个论坛期待一些问题的代码;而且只显示另一种语言的代码意味着没有努力开始用所需语言编写代码。 – 2013-02-19 12:38:28

+0

应该是:有能力的R用户的数量显然比知道Stata的有能力的R用户的数量要大得多! – 2013-02-19 13:05:18