【问题标题】:R: How to make sequence (1,1,1,2,3,3,3,4,5,5,5,6,7,7,7,8)R:如何制作序列(1,1,1,2,3,3,3,4,5,5,5,6,7,7,7,8)
【发布时间】:2016-03-23 15:30:03
【问题描述】:

标题说明了一切:我将如何编码这样一个重复序列,其中基本重复单元是:一个向量 c(1,1,1,2) - 重复 4 次,但每个向量中的值增加 2时间?

我尝试了各种rep、times、each、seq,但都无法得到想要的结果..

【问题讨论】:

    标签: r


    【解决方案1】:
    c(1,1,1,2) + rep(seq(0, 6, 2), each = 4)
    # [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8
    

    【讨论】:

      【解决方案2】:

      rep 函数允许在times 参数中使用与x 相同长度的向量。我们可以使用超级机密rep_len 扩展所需的模式。

      rep(1:8, rep_len(c(3, 1), 8))
      #[1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8
      

      【讨论】:

      • rep_len() 没有什么秘密。
      【解决方案3】:

      我不确定我是否正确,但是这么简单的事情有什么问题:

      rep<-c(1,1,1,2)
      step<-2
      vec<-c(rep,step+rep,2*step+rep,3*step+rep)
      

      【讨论】:

        【解决方案4】:

        我接受了卢克,因为它对我来说是最容易理解的(并且最接近我已经尝试过的,但失败了!)

        我使用了这个最终形式:

        > c(1,1,1,2)+rep(c(0,2,4,6),each=4)
        [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          pattern <- rep(c(3, 1), len = 50) unlist(lapply(1:8, function(x) rep(x, pattern[x]))) [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8

          这让您只需调整rep(len = X) 下的模式长度,并删除任何其他答案显示的加法用法。

          【讨论】:

            【解决方案6】:

            怎么样:

            input <- c(1,1,1,2)
            n <- 4
            increment <- 2
            sort(rep.int(seq.int(from = 0, by = increment, length.out = n), length(input))) + input
            
            [1] 1 1 1 2 3 3 3 4 5 5 5 6 7 7 7 8
            

            【讨论】:

              猜你喜欢
              • 2014-04-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-03-17
              • 1970-01-01
              • 2018-12-07
              • 2011-10-02
              • 2013-02-20
              相关资源
              最近更新 更多