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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Do not modify this file since it was automatically generated from:
%
% insert.R
%
% by the Rdoc compiler part of the R.oo package.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\name{insert}
\alias{insert.default}
\alias{insert}
\title{Insert values to a vector at certain positions}
\description{
Insert values to a vector at certain positions.
}
\usage{
\method{insert}{default}(x, ats, values=NA, useNames=TRUE, ...)
}
\arguments{
\item{x}{The \code{\link[base]{vector}} of data values.}
\item{ats}{The indices of \code{x} where the values should be inserted.}
\item{values}{A \code{\link[base]{list}} or a \code{\link[base]{vector}} of the values to be inserted.
Should be of same length as \code{ats}, unless if a single value
when it is automatically extended without a warning.}
\item{useNames}{If \code{\link[base:logical]{FALSE}}, the names attribute is dropped/ignored,
otherwise not. Only applied if argument \code{x} is named.}
\item{...}{Not used.}
}
\examples{
# Insert NAs (default) between all values
y <- c(a=1, b=2, c=3)
print(y)
x <- insert(y, ats=2:length(y))
Ex <- c(y[1], NA_real_, y[2], NA_real_, y[3])
print(x)
stopifnot(identical(x,Ex))
# Insert at first position
y <- c(a=1, b=2, c=3)
print(y)
x <- insert(y, ats=1, values=rep(NA_real_,2))
Ex <- c(NA_real_,NA_real_,y)
print(x)
stopifnot(identical(x,Ex))
x <- insert(y, ats=1, values=rep(NA_real_,2), useNames=FALSE)
print(x)
# Insert at last position (names of 'values' are ignored
# because input vector has no names)
x <- insert(1:3, ats=4, values=c(d=2, e=1))
Ex <- c(1:3,2,1)
print(x)
stopifnot(identical(x,Ex))
# Insert in the middle of a vector
x <- insert(c(1,3,2,1), ats=2, values=2)
print(x)
stopifnot(identical(as.double(x),as.double(Ex)))
# Insert multiple vectors at multiple indices at once
x0 <- c(1:4, 8:11, 13:15)
x <- insert(x0, ats=c(5,9), values=list(5:7,12))
print(x)
Ex <- 1:max(x)
stopifnot(identical(as.double(x),as.double(Ex)))
x <- insert(x0, ats=c(5,9,12), values=list(5:7,12,16:18))
print(x)
Ex <- 1:max(x)
stopifnot(identical(as.double(x),as.double(Ex)))
# Insert missing indices
Ex <- 1:20
missing <- setdiff(Ex, x0)
x <- x0
for (m in missing)
x <- insert(x, ats=m, values=m)
print(x)
stopifnot(identical(as.double(x),as.double(Ex)))
}
\seealso{
\code{\link[base]{append}}() takes argument \code{after} (a scalar). For example,
\code{append(x, y, after=after) == insert(x, values=y, ats=after+1)}.
Contrary to \code{append()}, \code{insert()} accepts a vector of insert indices.
}
\author{Henrik Bengtsson}
\keyword{manip}
|