Chapter 23 Writing functions

Imagine that we would like to rescale variables to the range of 0 to 1.

# our.dataset has 4 variables

our.dataset <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10),
    d = rnorm(10))

The equation for rescaling variables into the simplex (0-1) is:

\[x_{\text{new}} = \frac{x_i - \text{min}(x)}{ \text{max}(x) - \text{min}(x)}\] We could rescale these four variables to 0 and 1 by doing the following:

our.dataset$a <- (our.dataset$a - min(our.dataset$a, na.rm = TRUE))/(max(our.dataset$a,
    na.rm = TRUE) - min(our.dataset$a, na.rm = TRUE))
our.dataset$b <- (our.dataset$b - min(our.dataset$b, na.rm = TRUE))/(max(our.dataset$b,
    na.rm = TRUE) - min(our.dataset$a, na.rm = TRUE))
our.dataset$c <- (our.dataset$c - min(our.dataset$c, na.rm = TRUE))/(max(our.dataset$c,
    na.rm = TRUE) - min(our.dataset$c, na.rm = TRUE))
our.dataset$d <- (our.dataset$d - min(our.dataset$d, na.rm = TRUE))/(max(our.dataset$d,
    na.rm = TRUE) - min(our.dataset$d, na.rm = TRUE))

What if our dataset had 31 variables?

Repeating that equation and this chunk of code 31 times could become a tedious and inneficient process:

our.dataset$a <- (our.dataset$a - min(our.dataset$a, na.rm = TRUE))/(max(our.dataset$a,
    na.rm = TRUE) - min(our.dataset$a, na.rm = TRUE))

But, we can see that, except from the input, the code was practically the same among the variables

The function here was deliberately hidden to not cause confusion among the participants

# our secret hidden function
rescale01(our.dataset$a)
rescale01(our.dataset$b)
rescale01(our.dataset$c)
rescale01(our.dataset$d)