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.