Max Kuhn wrote:
Perhaps this is obvious, but Ive never understood why this is the
general convention:

An opening curly brace should never go on its own line;

I tend to do this:

f <- function()
{
  if (TRUE)
    {
      cat("TRUE!!\n")
    } else {
      cat("FALSE!!\n")
    }
}

(I don't usually put one-liners in if/else blocks; here I would have
used ifelse)

I haven't seen many others format code in this way. Is there an
objective reason for this (such as the rule for the trailing "}") or
is this just aesthetics?

I think the problem is not much putting the opening brace after function(), or after if (...), like you do. The problem is putting the else at a new line like in:

if (TRUE) {
    cat("TRUE!!\n")
}
else
{
    cat("FALSE!!\n")
}

When you source this code, the first part until the first closing brace is considered complete by the R parser, and then, 'else' is considered as the begining of a new command, which is a syntax error:

> if (TRUE) {
+     cat("TRUE!!\n")
+ }
TRUE!!
> else
Error: syntax error
> {
+     cat("FALSE!!\n")
+ }
FALSE!!

If you put the same code in a function, you got the expected behaviour:

> f <- function () {
+     if (TRUE) {
+         cat("TRUE!!\n")
+     }
+     else
+     {
+         cat("FALSE!!\n")
+     }
+ }
> f()  # No syntax error!
TRUE!!

Thus, this is technical reason for NOT putting else on another line.
For the rest, I share Hadley's feeling that you consumes "too much lines" and I tend to prefer the "regular" R syntax you got when you source your code.
Best,

Philippe


Thanks,

Max

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to