R/parse_ratio.R

Defines functions parse_ratio

Documented in parse_ratio

##' Parse character ratio to double, e.g., `1/5` → `0.2`
##'
##' 
##' @title parse_ratio
##' @param ratio Character vector of ratios
##' @return Numeric vector
##' @export
##' @author Guangchuang Yu
parse_ratio <- function(ratio) {
    x <- as.character(ratio)
    x <- sub("^\\s*", "", x)
    x <- sub("\\s*$", "", x)
    suppressWarnings({
        numerator <- as.numeric(sub("/\\s*\\d+$", "", x))
        denominator <- as.numeric(sub("^\\s*\\d+\\s*/\\s*", "", x))
    })
    bad <- is.na(numerator) | is.na(denominator) | denominator == 0
    res <- numerator/denominator
    res[bad] <- NA_real_
    res
}

Try the yulab.utils package in your browser

Any scripts or data that you put into this service are public.

yulab.utils documentation built on Feb. 5, 2026, 9:10 a.m.