Function arguments can have default values. A call can omit the argument and use the default.

Program

Play the script to call greet without passing a name.

defaults.R
Replay: real traced execution (multi-file project)
greet <- function(name = "reader") { paste("Hello", name) }
message <- greet()
cat(message, "\n", sep = "")
  1. greet ← function(name = reader)

    1greet <- function(name = "reader") { paste("Hello", name) }2message <- greet()
    values this stepfunction(name = reader)greet
  2. message ← Hello reader

    1greet <- function(name = "reader") { paste("Hello", name) }2message <- greet()3cat(message, "\n", sep = "")
    values this stepHello readermessagereadername default
  3. cat(message, " ", sep = "")

    2message <- greet()3cat(message, "\n", sep = "")
    outputHello reader
    values this stepHello readermessage

Follow the Default

  1. greet is defined with name = "reader".
  2. The call is greet() with no argument.
  3. R uses the default value reader.
  4. paste("Hello", name) makes Hello reader.
  5. message stores that text and cat prints it. | step | value | | --- | --- | | default name | reader | | message | Hello reader | | stdout | Hello reader |
default argument `name = "reader"` supplies a value when the caller omits `name`.
function call `greet()` uses the default because no argument is passed.
last expression The function returns the value of its last expression.

Exercise: defaults.R

Reproduce the output Hello reader, then trace how the omitted argument uses the default name reader.