复制交替的矢量值

时间:2017-02-09 20:45:38

标签: r vector

我无法弄清楚如何生成从350的向量,其中偶数被复制两次,而不均匀的数字被复制一次,这样向量就会

3, 4, 4, 5, 6, 6, 7, 8, 8, 9, ..., 50, 50

3 个答案:

答案 0 :(得分: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

x %% 2 == 0给出一个逻辑向量,指示x的哪些元素是偶数。由于TRUEFALSE的整数值分别为10,因此向x %% 2 == 0添加1会为我们提供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

答案 1 :(得分:8)

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

\d{2}-\w{3}-\d{4}

答案 2 :(得分:5)

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

x <- 3:50
sort(c(x, x[c(FALSE, TRUE)]))