numeric_version
Numeric Versions
Description
Creates and manipulate version objects, multipart version
identifiers of the form 2.17-2.
Usage
numeric_version(x, strict = TRUE)
as.numeric_version(x)
is.numeric_version(x)
package_version(x, strict = TRUE)
is.package_version(x)
as.package_version(x)
R_system_version(x, strict = TRUE)
getRversion()
[.numeric_version(x, i, j)
[[.numeric_version(x, ..., exact = NA)
[[<-.numeric_version(x, ..., value)
Ops.numeric_version(e1, e2)
Summary.numeric_version(..., na.rm)
as.character.numeric_version(x, ...)
as.data.frame.numeric_version(x, row.names = NULL, 
    optional = FALSE, ..., nm = paste(deparse(substitute(x), 
    width.cutoff = 500L), collapse = " "))
c.numeric_version(..., recursive = FALSE)
duplicated.numeric_version(x, incomparables = FALSE, ...)
print.numeric_version(x, ..., quote)
rep.numeric_version(x, ...)
unique.numeric_version(x, incomparables = FALSE, ...)
xtfrm.numeric_version(x)
$.package_version(x, name)
.encode_numeric_version(x, base = NULL)
.decode_numeric_version(x, base = NULL)
.make_numeric_version(x, strict = TRUE, regexp, classes = NULL)
Arguments
  
| x | a character vector represented as numeric version or package version, 
or an object of class numeric_version or 
package_version, or numeric 
vector for .decode_numeric_version. | 
  | strict | a logical value. If TRUE, any invalid version specification causes an error stop. | 
| i, j, exact, value, name | the arguments used in subscripts of an object of numeric_version 
class. See Subscript for the detailed description. | 
| e1, e2 | at least one of e1 and e2 must be objects inherited from  
"numeric_version". The other can be objects inherited from the 
"numeric_version" class or a character vector that can be 
coerced to the "numeric_version" class. | 
| na.rm | a logical value. If TRUE, NAs should be removed from 
Summary methods. | 
| row.names, optional, nm, width.cutoff, collapse | the arguments used in the method of generic as.data.frame for 
class "numeric_version". See as.data.frame for 
the detailed description. width.cutoff and collapse 
currently are not used. | 
| recursive | a logical value. If TRUE, combining is done recursively. 
The default is FALSE. | 
| incomparables | the arguments used in methods of generic duplicated and 
unique for class "numeric_version".  
See  duplicated and unique for the 
detailed description. | 
| base | the base value used to encode or decode a numeric version. 
If it is NULL, by default base is defined as the value 
of the maximum of unlist of x, plus 1 (that is 
max(unlist(x)) +1). | 
| regexp | a pattern matching a regular expression in character strings.  
It is used to check if x is followed the valid  version 
specification. | 
| classes | additional class names attached to the created "numeric_version" 
object. | 
| quote | this argument is ignored. | 
| ... | other optional arguments passed to or from functions/methods. | 
 
Details
An object of 
"numeric_version" is a list of integer vectors. 
Each integer vector contains a sequence of integers represented as 
a numeric version. The valid numeric version string could contain 
several digits separated by  a "." or a "-" character. 
-  numeric_version() creates a "numeric_version" object 
by using the utility function .make_numeric_version().
-  is.numeric_version() tests if an object is inherited from 
"numeric_version".
-  as.numeric_version() coerces an object to class 
"numeric_version".
The class 
"package_version" inherits from class 
"numeric_version". It is used to represent the version of a 
package.  The valid package version string must contain at least two 
digits separated by one "." or "-" character.  This is different from 
a valid numeric version string, which can contain only one digit 
(therefore a "." or a "-" character is not necessary).
-  package_version() creates a "package_version" object 
by using the utility function .make_numeric_version(). 
If x is a list with the names "major" and "minor", 
then R_system_version() is used to created an object of class 
"R_system_version". 
-  is.package_version() tests if an object is inherited 
from "package_version".
-  as.package_version() coerces an object to class 
"package_version".
The class "R_system_version" inherits from class 
"package_version". It is used to represent the system version. 
The valid system version string must contain exactly three digits 
separated by two "." characters. R_system_version() creates an 
object of class "R_system_version" by using the utility 
function .make_numeric_version().
getRversion() returns the R system version in the object of 
the class "R_system_version".
You can apply the subscript operators 
[, 
[[ and 
[[<- to the class 
"numeric_version", and you can apply 
$ to the class 
"package_version" to extract or replace 
part of the object. See 
Subscript for the detailed 
description.
The methods of group generic functions 
Ops and 
Summary are 
implemented for the class 
"numeric_version". All operations are 
based on the 
"encoded" numeric version (by using the utility 
function 
.encode_numeric_version). The supported 
Ops 
operators are: 
  
The supported 
Summary functions are: 
  
Other associated methods of generic functions implemented for the  
class "numeric_version" include as.character, 
as.data.frame, c, duplicated, print, 
rep, unique and xtfrm. 
"xtfrm.numeric_version" returns a numeric vector of the 
same length as x, as well as attributes "base", 
"lens" and ".classes". The "base" value is 
1 plus the maximum of the un-list of x (that is, 
max(unlist(x)) +1).
"lens" is a length vector of each component of 
x.
".classes" contains the class names of 
x. 
The [i]th element in returned numeric vector is computed as:
r[i] = sum(x[[i]][1] + x[[i]][2]/base + x[[i]][3]/base^2 +....+ x[[i]][k]/base^(k-1))
where 
k is the length of the [i]th component of 
x.  
 .encode_numeric_version, .decode_numeric_version and 
.make_numeric_version are utilities to handle the 
numeric_version objects.  .encode_numeric_version and 
.decode_numeric_version are used to encode and decode the 
numeric version objects with a specified base value.  
.make_numeric_version creates a numeric version object by 
using those valid version strings in x.
Value
| numeric_version() | returns an object of class numeric_version. | 
| as.numeric_version() | returns an object of class numeric_version. | 
| .make_numeric_version() | returns an object of class numeric_version. | 
| is.numeric_version() | returns logical TRUE or FALSE. | 
| is.package_version() | returns logical TRUE or FALSE. | 
| Ops.numeric_version() | returns logical TRUE or FALSE. | 
| package_version() | returns an object of class package_version. | 
| as.package_version() | returns an object of class package_version. | 
| R_system_version() | returns an object of class R_system_version. | 
| getRversion() | returns an object of class R_system_version. | 
| extraction operators [, [[, and $ | return the designated elements or properties of the object. | 
| replacement operator [[<- | returns the x but with replaced value in the designated elements or properties. | 
| Summary.numeric_version() | returns the one or two elements of object x. | 
 
| as.character.numeric_version() | returns a character vector. | 
| as.data.frame.numeric_version() | returns a data frame. | 
| c.numeric_version() | returns an new object of class numeric_version, 
which list is the combination of all values from all arguments to the function. | 
| duplicated.numeric_version() | returns a logical vector to indicate which elements are duplicates. | 
| print.numeric_version() | returns nothing but prints out the single quoted character format of each element. | 
| rep.numeric_version() | returns an object like x with replicated values. | 
| unique.numeric_version() | returns an object like x but with no duplicate values. | 
| xtfrm.numeric_version | returns a numeric vector of the same length. | 
| .encode_numeric_version() | returns a numeric vector of the same length as x, 
as well as attributes "base", "lens" and ".classes". 
 
 The "base" value is the input argument base.
 The "lens" is a length vector of each component of x.
 The ".classes" contains the class names of x. 
The [i]th element in the returned numeric vector is computed as follows:
r[i] = sum(x[[i]][1] + x[[i]][2]/base + x[[i]][3]/base^2 +....+ x[[i]][k]/base^(k-1)) 
where k is the length of the [i]th component of x. | 
| .decode_numeric_version() | returns the decoded numeric 
version object. (The decoded algorithm could be the reverse of the operation 
described for .encode_numeric_version.) | 
 
Differences between Spotfire Enterprise Runtime for R and Open-source R
The Spotfire Enterprise Runtime for R functions S_system_version() and getSversion() are non-existent in open-source R, 
but they are similar to open-source R functions R_system_version() and getRversion().
See Also
Subscript, 
Ops, 
Summary, 
as.character, 
as.data.frame, 
c, 
duplicated, 
print,
rep, 
unique, 
xtfrm, 
grepl       
 
Examples
x.num <- numeric_version(c("2", "2.12.1", "2.13-1", "1-5-1-2"))
x.num
x.num > "2.12"
which(x.num == max(x.num))
data.frame(Version=x.num) 
## Not run:  numeric_version(c("1-5-1-2", "1.5$2"))  # "$" is not legal in version 
numeric_version(c("1-5-1-2", "1.5$2"), strict = FALSE) # no error, NA for bad entry
# package_version needs at least 2 parts
package_version(c("2", "1-5-1-2"), strict=FALSE)
# R_system_version needs exactly 3 parts
R_system_version(c("2.12.1", "2.13-1", "1.13.0", "1.5.1.2", "4"), strict = FALSE) 
getRversion()