R: Numeric Versions

numeric_version {base} | R Documentation

## Numeric Versions

### Description

A simple S3 class for representing numeric versions including package versions, and associated methods.

### Usage

    numeric_version(x, strict = TRUE)
    package_version(x, strict = TRUE)
    R_system_version(x, strict = TRUE)
    getRversion()

### Arguments

`x` | a character vector with suitable numeric version strings (see ‘Details’); for `package_version`, alternatively an R version object as obtained by `R.version`.
`strict` | a logical indicating whether invalid numeric versions should results in an error (default) or not.

### Details

Numeric versions are sequences of one or more non-negative integers, usually (e.g., in package ‘DESCRIPTION’ files) represented as character strings with the elements of the sequence concatenated and separated by single . or - characters. R package versions consist of at least two such integers, an R system version of exactly three (major, minor and patchlevel).

Functions `numeric_version`, `package_version` and `R_system_version` create a representation from such strings (if suitable) which allows for coercion and testing, combination, comparison, summaries (min/max), inclusion in data frames, subscripting, and printing. The classes can hold a vector of such representations.

`getRversion` returns the version of the running R as an R system version object.

The `[[` operator extracts or replaces a single version. To access the integers of a version use two indices: see the examples.

### See Also

`compareVersion`; `packageVersion` for the version of a specific R package. `R.version` etc for the version of R (and the information underlying `getRversion()`).

### Examples

    x <- package_version(c("1.2-4", "1.2-3", "2.1"))
    x < "1.4-2.3"
    c(min(x), max(x))
    x[2, 2]
    x$major
    x$minor

    if(getRversion() <= "2.5.0") { ## work around missing feature
      cat("Your version of R, ", as.character(getRversion()),
          ", is outdated.\n",
          "Now trying to work around that ...\n", sep = "")
    }

    x[[c(1, 3)]]  # '4' as a numeric vector, same as x[1, 3]
    x[1, 3]      # 4 as an integer
    x[[2, 3]] <- 0   # zero the patchlevel
    x[[c(2, 3)]] <- 0 # same
    x
    x[[3]] <- "2.2.3"; x
    x <- c(x, package_version("0.0"))
    is.na(x)[4] <- TRUE
    stopifnot(identical(is.na(x), c(rep(FALSE,3), TRUE)),
    	  anyNA(x))

[Package base version 3.1.2 Index]