当我查看R函数时,我经常会发现以下结构:
f <- function(exp=T) {
if (exp)
a <- 1
else
a <- 2
}
f()
f(F)
Run Code Online (Sandbox Code Playgroud)
这将运行没有错误.但是执行内部函数代码会引发错误,因为R可能假定语句在第一次赋值后完成,a <- 1并且无法处理以下其他内容.
exp=T
if (exp)
a <- 1
else
a <- 2
Run Code Online (Sandbox Code Playgroud)
现在,这对我来说很有意义,但我仍然想了解为什么执行代码的行为在函数内部或外部执行时会有所不同.
有史以来最简单的脚本,为什么我会收到错误:
> x <- -5
> if(x > 0){
+ print("Non-negative number")
+ }
> else{
Error: unexpected 'else' in "else"
> print("Negative number")
[1] "Negative number"
> }
Error: unexpected '}' in "}"
Run Code Online (Sandbox Code Playgroud)
如果我只是把其他人放在}之后,那就没问题了.
> x <- -5
> if(x > 0){
+ print("Non-negative number")
+ } else{
+ print("Negative number")
+ }
[1] "Negative number"
Run Code Online (Sandbox Code Playgroud)
事情是我总是把它写成没有问题的第一种方式; 我疯了吗?