首页 > 解决方案 > 使用 paste 和 rep 函数指定序列的顺序

问题描述

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

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”等,而不是在切换到“a21”之前重复“a11 a12”7 次a22" 7 次。这看起来应该很简单,但是在尝试了各种代码修改之后,我想不通。任何建议,将不胜感激。

标签: rpasterep

解决方案


We can also do

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"

推荐阅读