【问题标题】:Error: unexpected '}' in "}" if...print()...else...print() [duplicate]错误:“}”中的意外'}' if...print()...else...print() [重复]
【发布时间】:2014-05-29 23:31:32
【问题描述】:

我得到了答案:if 的右括号应该是 BEFORE ELSE 而不是 ABOVE。

这里已经讨论过这个错误: Error: unexpected '}' in " }"https://stackoverflow.com/questions/15303559/error-unexpected-in 但他们没有帮助我。

我运行代码:

i <- 21
if(i==22){
 print(c("xxx"))
}
else{
 print(c("yyy"))
}

然后得到一个错误

否则{ 错误:“else”中出现意外的“else”
打印(C(“年年”)) [1] “年年” } 错误:“}”中出现意外的“}”

我在 Windows 上使用 Rstudio,相当新的 R 版本和 Rstudio,但不知道在哪里检查它

【问题讨论】:

  • 你使用什么语言?
  • 就是所有的代码,你会得到这个错误的原因之一是它之前的不平衡。
  • 嘿,我的“雷神之锤”怎么了​​?我的闪电用完了吗?
  • @BondedDust - 我也遇到了同样的情况!
  • 也许他们稍后会给我们的锤子充电?

标签: r if-statement


【解决方案1】:

把else放在ifs括号后面

i <- 21
if(i==22){
  print(c("xxx"))
}else{
  print(c("yyy"))
}

##[1] "yyy"

【讨论】:

  • 来自 ?"if" 帮助页面:特别是,在 } 和 else 之间不应有换行符,以避免在键盘或通过源输入 if ... else 结构时出现语法错误.出于这个原因,防御性编程的一种(有点极端)态度是总是使用大括号,例如,for if 子句
【解决方案2】:

此代码将在函数中或用大括号括起来时起作用,但在其他地方不起作用,因为else 在新行上。有关详细信息,请参阅重复的问题。

良好的做法是将else} 放在同一行。然后它对两者都有效。

【讨论】:

  • 是什么让您觉得代码可以在脚本中运行?
  • 我确信它会,但试过了,震惊地发现它没有!显然这是我长期以来的一个误解;谢谢你让我直截了当!
  • 我发现了我的误解——它可以在一个函数中工作,我想我认为在作为脚本运行时应用了相同的规则。正在编辑回复...
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多