复制交替的矢量值

Car*_*nal 7 r vector

我无法弄清楚如何产生从向量350其中的偶数被复制两次,不均匀号码一次,使得载体可以

3, 4, 4, 5, 6, 6, 7, 8, 8, 9, ..., 50, 50
Run Code Online (Sandbox Code Playgroud)

Ric*_*ven 10

rep() 会做的.

x <- 3:50
rep(x, (x %% 2 == 0) + 1L)
#  [1]  3  4  4  5  6  6  7  8  8  9 10 10 11 12 12 13 14 14 15 16 16 17
# [23] 18 18 19 20 20 21 22 22 23 24 24 25 26 26 27 28 28 29 30 30 31 32
# [45] 32 33 34 34 35 36 36 37 38 38 39 40 40 41 42 42 43 44 44 45 46 46
# [67] 47 48 48 49 50 50
Run Code Online (Sandbox Code Playgroud)

x %% 2 == 0给出一个逻辑向量,指示哪些元素x是偶数.由于整数值TRUEFALSE10分别加1 x %% 2 == 0给了我们,我们需要为我们的矢量times的说法rep().

如果我们打高尔夫球,我们可以缩短比赛时间rep(x, (!x %% 2) + 1L).

请注意,如果我们的原始向量不是连续的,并且我们仍希望复制偶数值,则此方法也很有用.

v <- c(1, 2, 4, 3, 6)
rep(v, (!v %% 2) + 1L)
# [1] 1 2 2 4 4 3 6 6
Run Code Online (Sandbox Code Playgroud)

  • 还有一点硬编码:`rep(3:50,rep(1:2,24))` (5认同)

dww*_*dww 8

我们可以将所有值的向量和偶数的向量合并在一起:

sort(c(3:50, 2:25*2))
Run Code Online (Sandbox Code Playgroud)


zx8*_*754 5

使用回收,有点手动方式:

x <- 3:50
sort(c(x, x[c(FALSE, TRUE)]))
Run Code Online (Sandbox Code Playgroud)