【问题标题】:Loop over string vector for graphs in R循环遍历 R 中图形的字符串向量
【发布时间】:2013-02-19 06:48:55
【问题描述】:

我想遍历一个名为country 的字符串向量,其中包含国家/地区代码,例如AFGETH 等。

Stata 中的代码如下所示:

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

}

是否有与levelsof 类似的命令,以及将数据限制为特定国家代码的“if”语句,这是一个字符串,每个图表都将从该代码创建?

【问题讨论】:

  • 您可能不想像那样循环它。您可能需要 tapplyplyr 包中的 **ply 函数。
  • 根据您要对数据执行的操作,有一系列函数可以将函数应用于列表、列、行等。对于替换许多 for 语句非常有用。在 R 控制台中输入 ?apply。

标签: string r graph stata


【解决方案1】:

你会使用这样的东西:

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"))

【讨论】:

    【解决方案2】:

    顺便说一句,如果与构造 for 循环不同,apply 函数组实际上是类似的东西,问题是 apply 函数组是此类循环的包装器,并且特定于不同的数据结构和要求 - 更多Rish 的循环方式。我不知道速度提升的说法有多有效——我持怀疑态度。除此之外,如果我理解您的要求(我不知道 stata),使用 R 对数据进行子集化然后为每个子集绘制多个图可能会更容易。

    【讨论】:

    • 作为 Stata 人员,我确认此建议与问题的 Stata 内容相符。一方面我对 Stata 的喜爱,在我看来,询问如何在 R 中做某事比要求翻译 Stata 代码更好。 R 用户的数量显然远大于同样了解 Stata 的有能力的 R 用户数量!但是,这个论坛希望问题中有一些代码;但也只显示另一种语言的代码意味着无需努力开始用所需的语言编写代码。
    • 应该是:有能力的 R 用户的数量显然比有能力的 R 用户同时知道 Stata 的数量要大得多!
    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2022-11-15
    • 2012-01-22
    • 2012-09-12
    • 2014-09-19
    相关资源
    最近更新 更多