seqXtend {sfsmisc} | R Documentation |
Produce a sequence of unique values (sorted increasingly),
containing the initial set of values x
.
This can be useful for setting prediction e.g. ranges in nonparametric
regression.
seqXtend(x, length., method = c("simple", "aim", "interpolate"), from = NULL, to = NULL)
x |
numeric vector. |
length. |
integer specifying approximately the desired
length() of the result. |
method |
string specifying the method to be used. The default,
"simple" uses seq(*, length.out = length.) where
"aim" aims a bit better towards the desired final length,
and "interpolate" interpolates evenly inside
each interval (x[i], x[i+1]) in a way to
make all the new intervalls of approximately the same length. |
from, to |
numbers to be passed to (the default method for)
seq() , defaulting to the minimal and maximal x
value, respectively. |
numeric vector of increasing values, of approximate length
length.
(unless length. < length(unique(x))
in which case, the result
is simply sort(unique(x))
),
containing the original values of x
.
From, r <- seqXtend(x, *)
, the original values are at
indices ix <- match(x,r)
, i.e., identical(x, r[ix])
.
method = "interpolate"
typically gives the best results. Calling
roundfixS
, it also need more computational resources
than the other methods.
Martin Maechler
seq
; plotDS
can make particularly
good use of seqXtend()
a <- c(1,2,10,12) seqXtend(a, 12)# --> simply 1:12 seqXtend(a, 12, "interp")# ditto seqXtend(a, 12, "aim")# really worse stopifnot(all.equal(seqXtend(a, 12, "interp"), 1:12)) ## for a "general" x, however, "aim" aims better than default x <- c(1.2, 2.4, 4.6, 9.9) length(print(seqXtend(x, 12))) # 14 length(print(seqXtend(x, 12, "aim"))) # 12 length(print(seqXtend(x, 12, "int"))) # 12 ## "interpolate" is really nice: xt <- seqXtend(x, 100, "interp") plot(xt, main="seqXtend(*, 100, \"interpol\")") points(match(x,xt), x, col = 2, pch = 20) # .... you don't even see that it's not equidistant # whereas the cheap method shows ... xt2 <- seqXtend(x, 100) plot(xt2, col="blue") points(match(x,xt2), x, col = 2, pch = 20)