我试图迭代更新我在文本中寻找的模式.

  • 我知道所需单词的长度;它是一个常数,比如说4
  • 我知道所需单词中的字符类型;按字母顺序,小写
  • 除非我故意在特定索引中插入特定字符,否则其余字符可以是任何字母(a-z,小写)

如何以迭代方式更改模式?

例如:

words <- c("bake", "tree", "keep", "game", "ride", "Bake", "Apple", "lame")

pattern1 <- '****'
# return "bake", "tree", "keep", "game", "ride", "lame"
pattern2 <- '*a**'
# return "bake", "game", "lame"
pattern3 <- '*a*e'
# return "bake", "game", "lame"
pattern4 <- '*ame'
# return "game", "lame"

非常感谢.

推荐答案

我不喜欢蒂姆的解决方案,因为"不考虑出现大写或其他符号.

您可以将其写入这样的函数中,以提供更大的灵活性:

spec_grep <- function(string, pattern) {
  pattern <- gsub("\\*", "[a-z]", pattern)
  grep(paste0("^", pattern, "$"), string, value = T)
}

words <- c("bake", "tree", "keep", "game", "da4e", "Bake", "Apple", "lame")
pattern <- "*a*e"
spec_grep(words, pattern)

[1] "bake" "game" "lame"

R相关问答推荐

如何将log 2刻度上的数字转换为自然log

gt()从gt为相同内容的单元格 colored颜色 不同?

如何改变x轴比例的列在面

即使硬币没有被抛出,也要保持对其的跟踪

解析R函数中的变量时出现的问题

查找所有站点的最小值

从多面条形图中删除可变部分

如何使用同比折线图中的个别日

如何将一些单元格的内容随机 Select 到一个数据框中?

如何计算每12行的平均数?

如何提取R中其他字符串和数字之间的字符串?

计算使一组输入值最小化的a、b和c的值

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

按镜像列值自定义行顺序

生存时间序列的逻辑检验

重写时间间隔模糊连接以减少内存消耗

随机生成样本,同时在R内的随机样本中至少包含一次所有值

在具有条件的循环中添加行

使用dplyr删除具有条件的行