Akrun是一种更紧凑的方法,但这也可行
# 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
Run Code Online (Sandbox Code Playgroud)
这里的见解是,rep第二个参数中的整数向量与第一个参数的长度相同,第一个参数表示第一个参数的每个元素的重复次数.
请注意,此解决方案依赖于假设,c(3,4,6,8)即要重复的元素的索引或位置.在这种情况下,db的评论有一个单行
rep(x, (seq_along(x) %in% c(3,4,6,8)) + 1)
Run Code Online (Sandbox Code Playgroud)
如果相反,c(3,4,6,8)表示要重复的值,那么docendo-discimus的超紧凑代码,
rep(x, (x %in% c(3,4,6,8)) * (n-1) +1)
Run Code Online (Sandbox Code Playgroud)
其中n可以调整以改变重复次数.如果您需要多次调用它,可以将其汇总到类似函数中
myReps <- function(x, y, n) rep(x, (x %in% y) * (n-1) +1)
Run Code Online (Sandbox Code Playgroud)
并称为
myReps(1:10, c(3,4,6,8), 2)
Run Code Online (Sandbox Code Playgroud)
在当前的情况下.