我在使用if else函数时遇到问题,我的代码是这样的:
ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
If(LSWay == 0){
NewWgtZoo <- WgtZoo
}else{
BackPos <- BackMatrix(Pos,1)
NewWgtZoo<- Ifelse((Sign(WgtZoo) * Sign(BackPos) * LSWay)>=0, WgtZoo, 0)
}
return(NewWgtZoo)
}
但是,当我在R中运行它时,错误消息显示为:
"Error: unexpected '{' in:
"ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
If(LSWay == 0){"
我该如何解决这个问题?那里的语法问题是什么?我查了很多网站,看来上面的if else语法是否正确。
非常感谢!
答案 0 :(得分:4)
代码中的错误是您使用If
而不是if
,而R是区分大小写的。因此,可以使用另一个名为If
的函数执行与if
不同的函数,并且正如@danielkullmann指出的那样,该函数正是R正在寻找的函数。
R生成的错误消息并不总是最有用,但在这种情况下, 指向非常接近问题区域。它向您展示了它“迷茫”的地方,但是由您决定原因!
在您修复了第一个问题之后,您会在第6行找到另一个问题(出于同样的原因),您在其中写了Ifelse
而不是ifelse
。
最后一点:R非常友好,因此最好在代码中留一些空间以提高易读性,尤其是使用if
和else
语句。原因如下:
if (LSWay == 0) {
比if(LSWay == 0){
sum(x)
,不通常会添加空格,从而更容易在大块代码中发现这些条件语句。Google R Style Guide在这方面是一个有趣的读物。