Вы можете попробовать c()
и отрезать длину результата.
x <- c(2, 4, 7, 1)
c(3, x)[1:length(x)]
# [1] 3 2 4 7
Этот метод не делает никаких копий x
tracemem(x)
# [1] "<0x3cb5998>"
c(3, x)[1:length(x)]
# [1] 3 2 4 7
untracemem(x)
Исходный код append()
выглядит, как он может иметь некоторые полезные методы, чтобы попробовать, как хорошо.
append
# function (x, values, after = length(x))
# {
# lengx <- length(x)
# if (!after)
# c(values, x)
# else if (after >= lengx)
# c(x, values)
# else c(x[1L:after], values, x[(after + 1L):lengx])
# }
# <bytecode: 0x31ac490>
# <environment: namespace:base>
https://cran.rstudio.com/web/packages/rstackdeque/index.html – hrbrmstr
'c (new, tail (x, -1))' –