Rätta funktionsargument
Funktionen för harmoniskt medelvärde är nästan klar. Du behöver dock lägga till några kontroller av argumentet na.rm. Den här gången ska du inte kasta fel när indata har fel form – i stället ska du försöka rätta till det.
na.rm ska vara en logisk vektor med ett element (det vill säga TRUE eller FALSE).
Paketet assertive är redan inläst åt dig.
Den här övningen är en del av kursen
Introduktion till att skriva funktioner i R
Övningsinstruktioner
- Uppdatera
calc_harmonic_mean()så att argumentetna.rmrättas till: använduse_first()för att välja det första elementet ina.rm, ochcoerce_to()för att konvertera det till logisk typ.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Update the function definition to fix the na.rm argument
calc_harmonic_mean <- function(x, na.rm = FALSE) {
assert_is_numeric(x)
if(any(is_non_positive(x), na.rm = TRUE)) {
stop("x contains non-positive values, so the harmonic mean makes no sense.")
}
# Use the first value of na.rm, and coerce to logical
___ <- ___(___(___), ___ = "___")
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it malformed na.rm
calc_harmonic_mean(std_and_poor500$pe_ratio, na.rm = 1:5)