Parse a character vector to semantic versions
parse_version(version)
A list of "svptr" objects. The list itself is of class "svlist"
semver <- parse_version(c("1.2.3", "1.2.4", "1.0.0", "1.2.4-beta", "2.1.3-alpha", "1.9.4")) max(semver)#> Maj: 2 Min: 1 Pat: 3 Pre: alphaver124a <- semver[semver > "1.2.4-alpha"] sort(ver124a)#> [1] Maj: 1 Min: 2 Pat: 4 Pre: beta #> #> [2] Maj: 1 Min: 2 Pat: 4 #> #> [3] Maj: 1 Min: 9 Pat: 4 #> #> [4] Maj: 2 Min: 1 Pat: 3 Pre: alpha #># compare versions semver[[1]] < semver[[2]]#> [1] TRUE# compare against a version semver > semver[1]#> [1] FALSE TRUE FALSE TRUE TRUE TRUE# compare against a character string semver > "1.7.2"#> [1] FALSE FALSE FALSE FALSE TRUE TRUE# sort versions sort(semver)#> [1] Maj: 1 Min: 0 Pat: 0 #> #> [2] Maj: 1 Min: 2 Pat: 3 #> #> [3] Maj: 1 Min: 2 Pat: 4 Pre: beta #> #> [4] Maj: 1 Min: 2 Pat: 4 #> #> [5] Maj: 1 Min: 9 Pat: 4 #> #> [6] Maj: 2 Min: 1 Pat: 3 Pre: alpha #>order(semver)#> [1] 3 1 4 2 6 5rank(semver)#> [1] 2 4 1 3 6 5# get summary statistics min(semver)#> Maj: 1 Min: 0 Pat: 0max(semver)#> Maj: 2 Min: 1 Pat: 3 Pre: alpharange(semver)#> [1] Maj: 1 Min: 0 Pat: 0 #> #> [2] Maj: 2 Min: 1 Pat: 3 Pre: alpha #># coerce versions as.character(semver)#> [1] "1.2.3" "1.2.4" "1.0.0" "1.2.4-beta" "2.1.3-alpha" #> [6] "1.9.4"as.data.frame(semver)#> major minor patch prerelease build #> 1 1 2 3 #> 2 1 2 4 #> 3 1 0 0 #> 4 1 2 4 beta #> 5 2 1 3 alpha #> 6 1 9 4