如何在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.grid
和 apply
与 paste
一起使用:
> 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"
我有以下字符串:
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.grid
和 apply
与 paste
一起使用:
> 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"