1
0
mirror of https://github.com/msberends/AMR.git synced 2025-07-08 11:51:59 +02:00

extend vctrs support

This commit is contained in:
2022-10-31 11:19:06 +01:00
parent 9444ed6d1d
commit 796b972f8a
6 changed files with 145 additions and 29 deletions

View File

@ -64,7 +64,10 @@ vec_ptype2.ab.character <- function(x, y, ...) {
y
}
vec_cast.character.ab <- function(x, to, ...) {
unclass(x)
as.character(x)
}
vec_cast.ab.character <- function(x, to, ...) {
return_after_integrity_check(x, "antimicrobial code", as.character(AMR_env$AB_lookup$ab))
}
# S3: mo
@ -75,7 +78,10 @@ vec_ptype2.mo.character <- function(x, y, ...) {
y
}
vec_cast.character.mo <- function(x, to, ...) {
unclass(x)
as.character(x)
}
vec_cast.mo.character <- function(x, to, ...) {
return_after_integrity_check(x, "microorganism code", as.character(AMR::microorganisms$mo))
}
# S3: disk
@ -88,15 +94,49 @@ vec_ptype2.disk.integer <- function(x, y, ...) {
vec_cast.integer.disk <- function(x, to, ...) {
unclass(x)
}
vec_cast.disk.integer <- function(x, to, ...) {
as.disk(x)
}
vec_cast.double.disk <- function(x, to, ...) {
unclass(x)
}
vec_cast.disk.double <- function(x, to, ...) {
as.disk(x)
}
vec_cast.character.disk <- function(x, to, ...) {
unclass(x)
}
vec_cast.disk.character <- function(x, to, ...) {
as.disk(x)
}
# S3: mic
vec_cast.character.mic <- function(x, to, ...) {
as.character(x)
}
vec_cast.double.mic <- function(x, to, ...) {
# this calls as.double.mic()
as.double(x)
}
vec_cast.mic.double <- function(x, to, ...) {
as.mic(x)
}
vec_cast.mic.character <- function(x, to, ...) {
as.mic(x)
}
vec_math.mic <- function(.fn, x, ...) {
.fn(as.double(x), ...)
}
# S3: rsi
vec_ptype2.character.rsi <- function(x, y, ...) {
x
}
vec_ptype2.rsi.character <- function(x, y, ...) {
y
}
vec_cast.character.rsi <- function(x, to, ...) {
as.character(x)
}
vec_cast.rsi.character <- function(x, to, ...) {
as.rsi(x)
}

38
R/zzz.R
View File

@ -116,24 +116,44 @@ if (utf8_supported && !is_latex) {
s3_register("ggplot2::fortify", "mic")
s3_register("ggplot2::fortify", "disk")
# Support vctrs package for use in e.g. dplyr verbs
s3_register("vctrs::vec_ptype2", "ab.character")
s3_register("vctrs::vec_ptype2", "character.ab")
s3_register("vctrs::vec_cast", "character.ab")
s3_register("vctrs::vec_ptype2", "mo.character")
s3_register("vctrs::vec_ptype2", "character.mo")
s3_register("vctrs::vec_cast", "character.mo")
s3_register("vctrs::vec_ptype2", "ab_selector.character")
# S3: ab_selector
s3_register("vctrs::vec_ptype2", "character.ab_selector")
s3_register("vctrs::vec_ptype2", "ab_selector.character")
s3_register("vctrs::vec_cast", "character.ab_selector")
s3_register("vctrs::vec_ptype2", "ab_selector_any_all.logical")
# S3: ab_selector_any_all
s3_register("vctrs::vec_ptype2", "logical.ab_selector_any_all")
s3_register("vctrs::vec_ptype2", "ab_selector_any_all.logical")
s3_register("vctrs::vec_cast", "logical.ab_selector_any_all")
s3_register("vctrs::vec_ptype2", "disk.integer")
# S3: ab
s3_register("vctrs::vec_ptype2", "character.ab")
s3_register("vctrs::vec_ptype2", "ab.character")
s3_register("vctrs::vec_cast", "character.ab")
s3_register("vctrs::vec_cast", "ab.character")
# S3: mo
s3_register("vctrs::vec_ptype2", "character.mo")
s3_register("vctrs::vec_ptype2", "mo.character")
s3_register("vctrs::vec_cast", "character.mo")
s3_register("vctrs::vec_cast", "mo.character")
# S3: disk
s3_register("vctrs::vec_ptype2", "integer.disk")
s3_register("vctrs::vec_ptype2", "disk.integer")
s3_register("vctrs::vec_cast", "integer.disk")
s3_register("vctrs::vec_cast", "disk.integer")
s3_register("vctrs::vec_cast", "double.disk")
s3_register("vctrs::vec_cast", "disk.double")
s3_register("vctrs::vec_cast", "character.disk")
s3_register("vctrs::vec_cast", "disk.character")
# S3: mic
s3_register("vctrs::vec_cast", "character.mic")
s3_register("vctrs::vec_cast", "double.mic")
s3_register("vctrs::vec_cast", "mic.character")
s3_register("vctrs::vec_cast", "mic.double")
s3_register("vctrs::vec_math", "mic")
# S3: rsi
s3_register("vctrs::vec_ptype2", "character.rsi")
s3_register("vctrs::vec_ptype2", "rsi.character")
s3_register("vctrs::vec_cast", "character.rsi")
s3_register("vctrs::vec_cast", "rsi.character")
# if mo source exists, fire it up (see mo_source())
if (tryCatch(file.exists(getOption("AMR_mo_source", "~/mo_source.rds")), error = function(e) FALSE)) {