【问题标题】:Repeat pattern in R (integers down and up)R中的重复模式(向下和向上的整数)
【发布时间】:2018-03-09 16:46:28
【问题描述】:

我想创建一个从 5 到 0 的重复模式,然后再回到 5、3 次,所以我想要 5、4、3、2、1、0、1、2、3、4、5,...... .., 5 我怎么能这样做是R??

我知道rep

(seq(from=a, by=b, length=c),d)

函数,但不知道如何将它与此模式一起使用... 谁能帮忙,我,我想用

x <- 5
y <- 3

【问题讨论】:

    标签: r rep


    【解决方案1】:

    我们可以使用seqrev。因为我们不想重复 5 和 0 两次,所以我没有将它们包含在 seq 命令中。我们重复 seq(4, 1) 及其反向 (rev) 三次。

    a = seq(4, 1)
    c(rep(c(5, a, 0, rev(a)), 3), 5)
    
    #[1] 5 4 3 2 1 0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5
    

    【讨论】:

    • loopnum &lt;- function(n,times) { s &lt;- seq(n,1,-1); c(rep(c(s,0, rev(s[-1])), times), n) } 作为函数然后loopnum(5, 3) 得到相同的结果。
    • 较短:c(rep(c(5:0,1:4),3),5)
    【解决方案2】:

    这是另一个想法。我们可以使用5:00:5 创建向量。然后我们可以重复向量三次。最后,我们可以使用rle创建run-length encoding,将大于1的长度修改为1,使用inverse.rle创建最终输出。

    x <- rep(c(5:0, 0:5), 3)
    y <- rle(x)
    y$lengths[y$lengths > 1] <- 1
    z <- inverse.rle(y)
    z
    [1] 5 4 3 2 1 0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5
    

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2022-01-24
      • 1970-01-01
      • 2015-03-01
      • 2021-05-16
      • 2015-10-02
      • 2017-08-12
      • 2011-09-05
      • 2018-05-01
      相关资源
      最近更新 更多