首页 > 解决方案 > 如何从字母向量中枚举字符串

问题描述

我有以下字母向量:

my_alphs <- c("X","Y","Z")

给定一个带有星号 (*) 作为通配符的字符串:

my_str <- "LA**"

请注意,字符串的长度可以大于 4,星号的位置可以在任何不同长度的位置。

我想根据存储在 中的字母枚举所有星号 (*) my_alphs,从而得到以下结果(我手动执行此操作):

LAXX
LAXY
LAXZ
LAYX
LAYY
LAYZ
LAZX
LAZY
LAZZ

我怎样才能用 R 实现这一点?

标签: rstring

解决方案


my_str随心所欲地改变my_alphs

> library(dplyr)
> library(stringr)
> library(purrr)
> do.call(expand.grid, list(rep(list(my_alphs), str_count(my_str, "\\*")), stringsAsFactors=FALSE)) %>%
+   accumulate(function (str, replacement) str_replace(str, "\\*", replacement), .init=my_str) %>%
+   last()
[1] "LAXX" "LAYX" "LAZX" "LAXY" "LAYY" "LAZY" "LAXZ" "LAYZ" "LAZZ"

推荐阅读