File: insert.R

package info (click to toggle)
r-cran-bbmisc 1.13.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,256 kB
  • sloc: ansic: 176; sh: 9; makefile: 5
file content (31 lines) | stat: -rw-r--r-- 902 bytes parent folder | download
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
#' @title Insert elements from one list/vector into another list/vector
#'
#' @description
#' Inserts elements from \code{xs2} into \code{xs1} by name,
#' overwriting elements of equal names.
#'
#' @param xs1 [\code{list}]\cr
#'   First list/vector.
#' @param xs2 [\code{list}]\cr
#'   Second vector/list. Must be fully and uniquely named.
#' @param elements [\code{character}]\cr
#'   Elements from \code{xs2} to insert into \code{xs1}.
#'   Default is all.
#' @return \code{x1} with replaced elements from \code{x2}.
#' @export
#' @examples
#' xs1 = list(a = 1, b = 2)
#' xs2 = list(b = 1, c = 4)
#' insert(xs1, xs2)
#' insert(xs1, xs2, elements = "c")
insert = function(xs1, xs2, elements) {
  if (length(xs2) > 0L) {
    if (missing(elements)) {
      xs1[names(xs2)] = xs2
    } else {
      elements = intersect(elements, names(xs2))
      xs1[elements] = xs2[elements]
    }
  }
  return(xs1)
}