【问题标题】:Specify order of sequence with paste and rep functions使用 paste 和 rep 函数指定序列的顺序
【发布时间】:2020-01-05 15:17:23
【问题描述】:

我正在尝试对以下代码进行逆向工程

paste("a", rep(1:4, each=4), 1:4, sep="")`

给出以下结果:

[1] "a11" "a12" "a13" "a14" "a21" "a22" "a23" "a24" "a31" "a32" "a33" "a34" "a41" "a42" "a43" "a44" 

作为参考,此代码来自 LTRE{popbio} 帮助文件的示例部分。

对于我的数据,我需要重复以下序列 14 次:“a11 a12 a21 a22”。当我尝试修改原始代码时,

paste("a", rep(1:2, each=14), 1:2, sep="") 

我反而得到了

[1] "a11" "a12" "a11" "a12" "a11" "a12" "a11" "a12" "a11" "a12" "a11" "a12" "a11" "a12" "a21" "a22" "a21" "a22" "a21" "a22" "a21" "a22" "a21" "a22" "a21" "a22" "a21" "a22"`. 

从技术上讲,这些是正确的组合,但我需要序列为“a11、a12、a21、a22”、“a11、a12、a21、a22”等,而不是在切换之前重复“a11 a12”7 次到“a21 a22”7 次。这看起来应该很简单,但是在尝试了各种代码修改之后,我想不通。任何建议将不胜感激。

【问题讨论】:

    标签: r paste rep


    【解决方案1】:

    我们也可以

    rep(paste0("a", rep(1:2, each = 2), 1:2), 7)
    #[1] "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12"
    #[23] "a21" "a22" "a11" "a12" "a21" "a22"
    

    【讨论】:

      【解决方案2】:

      尝试repeachtimes 参数一起使用

      paste0("a", rep(1:2,times = 7, each = 2), 1:2)
      
      #[1] "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11"
      #[14] "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12" "a21" "a22" "a11" "a12"
      #[27] "a21" "a22"
      

      【讨论】:

        【解决方案3】:

        尝试将pastereplicate 一起使用:

        paste(replicate(14, "a11 a12 a21 a22"), collapse = " ")
        
        [1] "a11 a12 a21 a22 a11 a12 a21 a22 a11 a12 a21 a22 a11 a12 a21 a22 ...
        

        【讨论】:

          猜你喜欢
          • 2021-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-14
          相关资源
          最近更新 更多