Create the file `p2.R`

. You should write your solutions in that file.

Some of you will be tempted to use `for`

and `while`

-loops to solve some of the problems below (if you’ve used those before). Please don’t do this – the goal here is to try to use R the way professional data scientists use it, which usually means no loops.

Define the vector `c(42, 43, 45, 49, 501)`

, and store it in a variable called `my.vec`

.

Write code to extract the second and fourth element of the vector. Explain the difference between `my.vec`

and `"my.vec"`

Write a function with the signature `elems.below <- function(vec, upper.bound)`

which takes in a vector of numerics `vec`

, and returns a vector that contains the elements of `vec`

that are smaller than `upper.bound`

Write a function with the signature `elem.just.below <- function(vec, upper.bound)`

which takes in a vector of numerics `vec`

, and returns the largest element of `vec`

that is smaller than `upper.bound`

.

Write a function with the signature `my.median <- function(vec)`

which returns the median of the vector `vec`

. Hint: the median is the number at the center of the sorted version of vec. You can assume that the vector `vec`

is of length 5. Test your function. You may not use R’s built-in function `median`

. The expression `n %% 2`

computes the remainder of the division of `n`

by two, so `n %% 2`

is equal to 0 when an integer `n`

is even and positive, and is equal to one if it is odd and positive.

Now, rewrite `my.median`

so that `vec`

can be of arbitrary size. You can look up the rule for handling even-sized vectors in wikipedia.

Run the following once in the console:

`install.packages("gapminder")`

In your `p2.R`

, include `library(gapminder)`

Look at the data frame `gapminder`

, and figure out what each column contains. You should be able to explain this to your preceptor. You can run `?gapminder`

in the console to read the accompanying description to the dataset.

Write a function that computes how many countries in the dataset there are on a given continent. Test this function by querying it with different continent names.

Write a function that takes in a data frame like `gapminder`

, and returns the country with the largest life expectancy on a given continent between the years `y1`

and `y2`

.

Test the function from 3(b) by creating your own `gapminder`

-like data frame

Write a function that computes the world population in a given year. Test this function. Note: with some versions of R, you will need to modify `gapminder$pop`

using `gapminder$pop <- as.numeric(gapminder$pop)`

first. (Explanation (*optional advanced material*): this has to do with the fact that if `pop`

is an `integer`

rather than a `numeric`

, the sum of the components of is also an `integer`

, and `integer`

s are sometimes limited in size. To see the maximum possible integer on your computer, you can run `.Machine$integer`

.

Make a new data frame which contains the increase in life expectancy per year for each country in `gapminder`

. The increase per year is the difference between the life expectancy in the last year and the first year, divided by the number of years.