Define the vector `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

First, we’ll define the vector:

`my.vec <- c(42, 43, 45, 49, 501)`

There are several way to extract the elements we want:

`my.vec[c(F, T, F, T, F)] # only works if my.vec is of length 5`

`my.vec[c(2, 4)]`

`c(my.vec[2], my.vec[4])`

Write a function that takes in a vector and returns a new vector that cotains the second and fourth elements of that vector. Test this function by calling it. Include the calls to the function in the file you are submitting/showing to your preceptor.

```
ExtractElem24 <- function(v){
return(v[c(2, 4)])
}
# Now, let's try using the function
ExtractElem24(c(1, 2, 3, 4, 5, 6))
```

`## [1] 2 4`

`ExtractElem24(c(10, 8, 6, 4))`

`## [1] 8 4`

Write a function that outputs the solution to the quadratic equation \(ax^2 + bx + c = 0\), given \(a\), \(b\), and \(c\). Test your function when there are two, one, and no solutions.

```
quad_soln <- function(a, b, c){
disc <- b**2 - 4*a*c
if(disc > 0){
r1 <- (-b + sqrt(disc))/(2*a)
r2 <- (-b - sqrt(disc))/(2*a)
return(c(r1, r2))
}else if(disc ==0){
r1 <- (-b + sqrt(disc))/(2*a)
return(r1)
}else{
return(c())
}
}
# Try coefficients where there are two solutions, one solution, and no solutions
quad_soln(1, -5, 6)
```

`## [1] 3 2`

`quad_soln(1, -2, 1)`

`## [1] 1`

`quad_soln(2, 0, 5)`

`## NULL`

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.

```
CountCountries <- function(gapminder, cont){
n.countries <- gapminder %>% filter(continent == cont) %>% # Get rid of irrelevant continents
select(country) %>% # We'll be using n_distinct, so we
# want rows to be just countries
n_distinct
return(n.countries)
}
CountCountries(gapminder, "Oceania")
```

`## [1] 2`

`CountCountries(gapminder, "Africa")`

`## [1] 52`

`CountCountries(gapminder, "Americas")`

`## [1] 25`

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 this function.

```
LargestLifeExp <- function(gapminder, cont, y1, y2){
CountryLargeLE <- gapminder %>% filter(continent == cont) %>%
filter(year >= y1, year <= y2) %>%
summarize(country = country[which.max(lifeExp)])
return(as.character(CountryLargeLE$country)) # Extract the column so we're not returning
# a data frame, and then convert to
# character
}
# Let's try this
LargestLifeExp(gapminder, "Asia", 1950, 1990)
```

`## [1] "Japan"`

`LargestLifeExp(gapminder, "Americas", 1950, 1990)`

`## [1] "Canada"`

```
# Really to actually test the function, we want to be able to know the answer. We can
# do this like this
gapminder.small <- gapminder[1:108, ]
# We can now pretty easily figure out the answer by looking at the now-small table.
LargestLifeExp(gapminder.small, "Asia", 1950, 1990)
```

`## [1] "Bahrain"`

Write a function that computes the world population in a given year. Test this function.

```
# The idea here is to sum up the populations in a given year
WorldPopulation <- function(gapminder, y){
total.pop <- gapminder %>% filter(year == y) %>%
summarize(total = sum(as.numeric(pop)))
return(total.pop$total)
}
WorldPopulation(gapminder, 2007)
```

`## [1] 6251013179`

`WorldPopulation(gapminder, 1962)`

`## [1] 2899782974`

Make a new dataframe 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.

```
# Let's write a function that gets the answer for a subset
# of gapminder that just has one country
IncreaseRate <- function(year, lifeExp){
y1 <- min(year)
y2 <- max(year)
LE1 <- lifeExp[which.min(year)]
LE2 <- lifeExp[which.max(year)]
return( (LE2-LE1)/(y2-y1) )
}
LifeExpIncRate <- function(gapminder){
ans <- gapminder %>% group_by(country) %>%
summarize(le_inc_rate = IncreaseRate(year, lifeExp))
return(ans)
}
inc.rates <- LifeExpIncRate(gapminder)
# display the countries with the fastest increase
arrange(inc.rates, desc(le_inc_rate))
```