# https://iris.who.int/handle/10665/42330
# https://doi.org/10.1016/S0140-6736(03)15268-3
bmi <- function(weight, height, number = TRUE, cat = FALSE) {
prettycheck:::assert_number(weight, lower = 20)
prettycheck:::assert_number(height, lower = 0.5, upper = 3)
prettycheck:::assert_flag(number)
prettycheck:::assert_flag(cat)
if (isFALSE(number) && isFALSE(cat)) {
cli::cli_abort(paste0(
"{.strong number} and {.strong cat} cannot both be ",
"{.strong {cli::col_red('FALSE')}}."
))
}
if (isTRUE(number) && isTRUE(cat)) {
cli::cli_abort(paste0(
"{.strong number} and {.strong cat} cannot both be ",
"{.strong {cli::col_red('TRUE')}}."
))
}
bmi_number <- weight / (height ** 2)
if (isTRUE(number)) {
bmi_number
} else if (isTRUE(cat)) {
if (bmi_number < 18.5) {
bmi_cat <- "Underweight"
} else if (bmi_number >= 18.5 && bmi_number < 25) {
bmi_cat <- "Normal"
} else if (bmi_number >= 25 && bmi_number < 30) {
bmi_cat <- "Preobese"
} else if (bmi_number >= 30 && bmi_number < 35) {
bmi_cat <- "Obesity class 1"
} else if (bmi_number >= 35 && bmi_number < 40) {
bmi_cat <- "Obesity class 2"
} else if (bmi_number >= 40) {
bmi_cat <- "Obesity class 3"
}
paste0("~", round(bmi_number, 3), " (", bmi_cat, ")")
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.