File: utils_other.R

package info (click to toggle)
r-bioc-scuttle 1.8.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 888 kB
  • sloc: cpp: 508; sh: 7; makefile: 2
file content (39 lines) | stat: -rw-r--r-- 1,087 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
.replace <- function(new, old) {
    if (!is.null(old)) old else new
}

.use_names_to_integer_indices <- function(use, x, nameFUN, msg) {
    if (isTRUE(use)) {
        use <- seq_along(nameFUN(x))
    } else if (isFALSE(use)) {
        use <- integer(0)
    } else if (is.character(use)) {
        use <- match(use, nameFUN(x))
        if (any(is.na(use))) {
            stop(sprintf("'%s' contains invalid values", msg))
        }
    } else {
        if (any(use < 1L) || any(use > length(nameFUN(x)))) {
            stop(sprintf("'%s' contains out-of-bounds indices", msg))
        }
    }
    use
}

#' @export
#' @importClassesFrom S4Vectors List DataFrame
.unpackLists <- function(...) {
    objects <- list(...)
    for (i in seq_along(objects)) {
        current <- objects[[i]]
        if (!is.list(current)) {
            if (is(current, "List") && !is(current, "DataFrame")) {
                current <- as.list(current)
            } else {
                current <- list(current)
            }
            objects[[i]] <- current
        }
    }
    do.call(c, objects)
}