These questions are meant to test understanding of the lessons about writing R functions

## Functions and their environments

Suppose we have a simple function to calculate a circle’s diameter from its circumference:

```
circumference_to_diameter <- function(circumference){
diameter <- circumference / pi
return(diameter)
}
```

Then, we run the following bit of code:

```
diameter <- 30
circumference_to_diameter(15)
```

If we then ask R for the value of the object `diameter`

, what answer
will we get?

`9.54`

`30`

`15`

`4.77`

## Functions with default arguments

```
BNL <- function(week = 1, days = 5, living_room = 3, forgiven = -1){
lyrics <- data.frame(week, days, living_room, forgiven)
return(lyrics)
}
BNL()
## week days living_room forgiven
## 1 1 5 3 -1
```

Which of the following lines will return this dataframe:

week | days | living_room | forgiven |
---|---|---|---|

45 | 45 | 44 | 47 |

`BNL(45, 45, 44, week = 47)`

`BNL(w = 45, l = 44, d = 45, f = 47)`

`BNL(data.frame(week = 45, days = 45, living_room = 44, forgiven = 47))`

`BNL(forgiven = 45, living_room = 45, days = 44, week = 47)`

### Discussion

- If students choose this answer, they are looking only at the position of the arguments – ignoring that one of them has been given a name.
- This is the correct answer, which relies on partial matching.
- Interestingly this form doesn’t actually cause an error, just a strange-looking data frame. Students who choose this answer probably are confused about the differences between inputs and outputs of a function. This function takes four numeric values as input, and returns one data.frame.
- In contrast to the first, here the values are in the correct sequence but the names are scrambled.