【问题标题】:How to create combination of strings in R如何在R中创建字符串组合
【发布时间】:2021-12-16 00:56:35
【问题描述】:

我有以下字符串:

center <- "XXXXXXX"
sides <- c("aa", "bb", "cc") # Could be longer than 3 members
# string length of members could be varied.

我想要做的是将sides 的成员附加到center 两端的字符串列表所有可能的组合,产生:

aaXXXXXXXaa
aaXXXXXXXbb
aaXXXXXXXcc

bbXXXXXXXbb
bbXXXXXXXaa
bbXXXXXXXcc

ccXXXXXXXcc
ccXXXXXXXaa
ccXXXXXXXbb

如何使用 R 实现这一目标?

【问题讨论】:

    标签: r string vector combinations


    【解决方案1】:

    expand.gridapplypaste 一起使用:

    > apply(expand.grid(sides, sides), 1, paste, collapse = center)
    [1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb" "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
    > 
    

    或者:

    >  apply(expand.grid(sides, center, sides), 1, paste, collapse='')
    [1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb" "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
    > 
    

    或者正如@Wimpel 提到的,您可以使用data.table::CJ 来获取组合:

    > apply(data.table::CJ(sides, sides), 1, paste0, collapse = center)
    [1] "aaXXXXXXXaa" "aaXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXaa" "bbXXXXXXXbb" "bbXXXXXXXcc" "ccXXXXXXXaa" "ccXXXXXXXbb" "ccXXXXXXXcc"
    > 
    

    【讨论】:

      【解决方案2】:

      试试

      > do.call(paste0, expand.grid(sides, center, sides))
      [1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb"
      [6] "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-25
        • 1970-01-01
        • 2013-06-02
        • 2017-04-24
        • 1970-01-01
        • 2019-05-03
        • 1970-01-01
        • 2010-11-08
        相关资源
        最近更新 更多