如何在R中创建字符串组合

How to create combination of strings in R

我有以下字符串:

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 实现这一点?

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"
> 

尝试

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