Skip to content

Commit

Permalink
Functions.Rmd: some words on identical()
Browse files Browse the repository at this point in the history
Adds discussion of `identical()` function to `if` section. 

I, personally, find identical() to be useful, but I can see that it does not add aesthetic value to the code. 

(BTW, really enjoying seeing this book come together!)
  • Loading branch information
ijlyttle committed Mar 10, 2016
1 parent 89c60af commit 6410b4f
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions functions.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,14 @@ if (NA) {}

You can use `||` (or) and `&&` (and) to combine multiple logical expressions. These operators are "short-circuiting": as soon as `||` sees the first `TRUE` it returns `TRUE` without computing anything else. As soon as `&&` sees the first `FALSE` it returns `FALSE`. You should never use `|` or `&` in an `if` statement: these are vectorised operations that apply to multiple values. If you do have a logical vector, you can use `any()` or `all()` to collapse it to a single value.

You can enforce this more-strictly by using the `identical()` function, which returns either a single `TRUE` or a single `FALSE`. One thing to watch out for is that *you* have to be more strict when specifying integers:

```{r}
if (i == 0){}
if (identical(i, 0L)){}
```

### Multiple conditions

You can chain multiple if statements together:
Expand Down

0 comments on commit 6410b4f

Please sign in to comment.