Skip to Tutorial Content
## Warning in file(filename, "r", encoding = encoding): URL
## 'https://metrics.rstudioprimers.com/learnr/installClient': status was 'SSL
## connect error'

[1] “Warning: An error occurred with the client code.”

Matching Quiz

Assigning the right values to the right arguments can make or break your code.

log(1, 2)
## [1] 0
log(2, 1)
## [1] Inf
## Uh oh.

But how much do you know about assigning arguments? Take this quiz to find out.

methods

Not matching

Consider this brilliant function:

foo <- function(aaa, abb, abc) {
  c(aaa, abb, abc)
}

Default values

Let’s make foo even more brilliant:

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

Position

Remember foo:

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

Names

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

Partial names

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

foo <- function(aaa = 1, abb = 2, abc = 3) {
  c(aaa, abb, abc)
}

Dots

Now for some dark magic:

foodoo <- function(...) {
  c(...)
}

foodoo <- function(...) {
  c(...)
}

Here is one last wrinkle. Suppose we rewrite foodoo slightly:

foodoo <- function(a, ...) {
  c(...)
}

Tips

Congratulations! You’ve finished the quiz and know a lot about how R parses arguments. As a reward, here are two useful things that you can do with arguments in the RStudio IDE:

After you’ve written a function name followed by an opening parenthesis, look for a small yellow window to pop up that tells you the names, order, and default values of the function’s arguments. This can be handy when you are not very familiar with the function.

After you’ve written a function name followed by an opening parenthesis, press tab to invoke RStudio’s tab completion. RStudio will open a pop up menu that contains the names of the function’s arguments. Use the up and down arrow keys to navigate to a name, and then press enter to insert the name into your code. This can save you a lot of time once you get a feel for it.

Argument Matching