Метод Акруна более компактный, но и он сработает.
# get rep vector
reps <- rep(1L, 10L)
reps[c(3,4,6,8)] <- 2L
rep(1:10, reps)
[1] 1 2 3 3 4 4 5 6 6 7 8 8 9 10
Понимание здесь заключается в том, что rep
будет принимать целочисленный вектор во втором аргументе той же длины, что и первый аргумент, который указывает количество повторений для каждого элемента первого аргумента.
Обратите внимание, что это решение основано на предположении, что c(3,4,6,8)
— это индекс или позиция повторяющихся элементов. В этом сценарии комментарий db имеет однострочный
rep(x, (seq_along(x) %in% c(3,4,6,8)) + 1)
Если вместо этого c(3,4,6,8)
указывает значения, которые должны повторяться, то сверхкомпактный код docendo-discimus,
rep(x, (x %in% c(3,4,6,8)) * (n-1) +1)
где n можно регулировать для изменения количества повторений. Если вам нужно вызвать это пару раз, это можно свернуть в функцию, например
myReps <- function(x, y, n) rep(x, (x %in% y) * (n-1) +1)
и называется как
myReps(1:10, c(3,4,6,8), 2)
в текущем сценарии.
person
lmo
schedule
03.04.2017