原始 vector x:

x = 1:20

我正在寻找的是 vector y,每隔n个重复x中的第n个元素,例如,当n=4时:
n = 4
y = c(1,2,3,4,4,5,6,7,8,8,9,10,11,12,12,13,14,15,16,16,17,18,19,20,20)

我实际上是在为矩阵做的,我认为这与apply在这里使用margin=2有关,但无法马上解决,
谁能给我个快速解决方案?

最佳答案

我们也可以使用

v1 <- rep(1, length(x))
v1[c(FALSE, FALSE, FALSE, TRUE)] <- 2
rep(x, v1)
#[1]  1  2  3  4  4  5  6  7  8  8  9 10 11 12 12 13 14 15 16 16 17 18 19 20 20

或者,如@MichaelChirico所评论的那样,可以使第二行代码更通用
v1[seq_along(v1) %% n == 0L] = 2

或者使用ifelse(来自@JonathanCarroll的评论)
rep(x, ifelse(seq_along(x) %% n, 1, 2))

关于r - 在序列中每隔n个重复第n个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43314426/

10-12 18:09