#' character to composition
#'
#' @param x character
#' @return named numeric
#' @noRd
.character2composition <- function(x) {
if (!is.character(x)) {
stop("'x' must be a 'character'")
}
s <- strsplit(x, "[[:space:]]")[[1L]]
nms <- gsub("[^[:alpha:]]+", "", s)
v <- as.integer(gsub("[^[:digit:]]+", "", s))
v[is.na(v)] <- 1L
names(v) <- nms
v
}
#' Composition to character
#'
#' @param x numeric, named
#' @return character
#' @noRd
.composition2character <- function(x) {
if (!is.numeric(x)) {
stop("'x' must be a 'numeric'")
}
if (is.null(names(x))) {
stop("'x' must be a named 'numeric'")
}
paste0(names(x), "(", x, ")", collapse=" ")
}
#' Splits a string into a character vector
#'
#' @param x character, (AAString), (AAStringSet)
#' @return list of single characters
#' @importFrom methods is
#' @noRd
.string2character <- function(x) {
stopifnot(
is.character(x) ||
class(x) %in% c("AAString", "AAStringSet", "AAStringSetList")
)
if (is(x, "AAStringSetList")) {
x <- unlist(x)
}
## if we always apply as.character the names of original characters are
## removed
if (!is.character(x)) {
x <- as.character(x)
}
strsplit(x, split=character(), fixed=TRUE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.