Exercise 2: R vector operations

[This article was first published on R programming tutorials and exercises for data science and mathematics, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Find a function FUN that leads to the following output:

x <- sample(1:10)
FUN(x) - FUN(-x)
##  [1] 11 11 11 11 11 11 11 11 11 11

Hint: aim to keep the answer simple. The main logic of the function can often be summarized in a single line of R code.

Answer 1: click to reveal

We can write the function as follows:

  FUN <- function(x) {
    return(sort(x))
  }

Based on this definition of FUN we get:

  FUN(x)
  ##  [1]  1  2  3  4  5  6  7  8  9 10
  FUN(-x)
  ##  [1] -10  -9  -8  -7  -6  -5  -4  -3  -2  -1

which fulfills the puzzle condition:

  FUN(x) - FUN(-x)
  ##  [1] 11 11 11 11 11 11 11 11 11 11
Answer 2: click to reveal

Another possible definition of FUN that builds on Puzzle 1 is:

  FUN <- function(x) {
    return(rep(max(x), times = length(x)))
  }

Based on this definition of FUN we get:

  FUN(x)
  ##  [1] 10 10 10 10 10 10 10 10 10 10
  FUN(-x)
  ##  [1] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

which fulfills the puzzle condition:

  FUN(x) - FUN(-x)
  ##  [1] 11 11 11 11 11 11 11 11 11 11

As we have seen in exercise 1 the max can also be replaced with min and the result still holds:

  FUN <- function(x) {
    return(rep(min(x), times = length(x)))
  }
  FUN(x) - FUN(-x)
  ##  [1] 11 11 11 11 11 11 11 11 11 11
To leave a comment for the author, please follow the link and comment on their blog: R programming tutorials and exercises for data science and mathematics.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)