代码之家  ›  专栏  ›  技术社区  ›  LucasMation

复制向量的每个元素,并将“a”添加到奇数元素,将“b”添加到偶数元素

  •  1
  • LucasMation  · 技术社区  · 8 年前

    这是我的原始向量(长度可以改变)

    c("e1","e2","e3","e4","e5","e6","e7","e8","e9","e10")
    

    我想复制每个元素(保持顺序)并将“a”属性第一次出现,将“b”属性第二次出现,以获得:

    c("e1a","e1b","e2a","e2b","e3a","e3b","e4a","e4b","e5a","e5b","e6a","e6b","e7","e7b","e8a","e8b","e9a","e9b","e10a","e10b")
    

    我怎么能在R中用简洁的方式做到这一点?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Calum You    8 年前

    你可以用 rep(each = 2) 得到复制品然后使用 paste0 添加后缀字母如下。

    这是一个很好的向量回收的例子; 粘贴0 将使用的元素 c("a", "b") 直到长向量的长度自动耗尽。因此,您可以使用任何长度的原始 vec . 许多base和package R函数也会做类似的事情。

    vec <- c("e1","e2","e3","e4","e5","e6","e7","e8","e9","e10")
    paste0(rep(vec, each = 2), c("a", "b"))
    #>  [1] "e1a"  "e1b"  "e2a"  "e2b"  "e3a"  "e3b"  "e4a"  "e4b"  "e5a"  "e5b" 
    #> [11] "e6a"  "e6b"  "e7a"  "e7b"  "e8a"  "e8b"  "e9a"  "e9b"  "e10a" "e10b"
    

    于2018-08-07由 reprex package (第0.2.0版)。

    推荐文章