【问题标题】:Error in for loop in rr中的for循环错误
【发布时间】:2011-06-21 23:57:19
【问题描述】:

我正在使用一个名为 bumpus 的数据框。当我尝试使用 forif 语句仅选择某些行时,出现错误:

Error: unexpected '{' in "for(i in 1:(nrow(bumpus)){" 

你能帮我弄清楚我错过了什么吗?这是我的 for 循环:

for(i in 1:(nrow(bumpus)) {
    if(bumpus[i,2]=="m")
    {
    bumpus_males<-bumpus[i,]
    }
}

【问题讨论】:

  • 我建议您使用 Eclipse+StatET 或 ESS 来帮助您编写语法。这将为您节省大量时间。
  • 我也喜欢notepad++。基本上任何文本编辑器都可以让您显示哪些左括号和右括号属于一起是非常有用的。

标签: r loops for-loop statistics


【解决方案1】:

计算你的括号(或使用有助于匹配的好编辑器)。

您有 3 个左括号,然后在第一个大括号 ({) 之前只有 2 个右括号,您需要在大括号之前再添加一个右括号以匹配 for 条件。

此外,您可以使用 ifelse 函数更简单地执行此操作,而无需循环。

【讨论】:

  • 我想不出比“意外...”更清晰的 R 错误消息
【解决方案2】:

Greg 解决了您的问题,但您的代码看起来仍然很有趣。如所写(加上 Greg 的更正),您的循环将遍历每一行,并且如果该行在第二列中有“m”,它将用 仅该行替换 bumpus_males。因此,如果多行在第二列中有“m”,您只会将最后一行保存为 bumpus_males。我怀疑你真正想要的更像是:

bumpus_males <- subset(bumpus, bumpus[,2] == "m")

这将创建一个新的 data.frame,其中包含第 2 列为“m”的所有行。

【讨论】:

  • 是的,它只做一行。我的意思是它把它写了一遍。自从我做过任何类型的编程以来已经有一段时间了。谢谢你们。
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 2012-07-29
相关资源
最近更新 更多