当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R agrep 近似字符串匹配(模糊匹配)


R语言 agrep 位于 base 包(package)。

说明

使用广义编辑距离(转换一个字符串所需的插入、删除和替换的最小可能加权数量)在字符串 x(第二个参数)的每个元素中搜索与 pattern(第一个参数)的近似匹配进入另一个)。

用法

agrep(pattern, x, max.distance = 0.1, costs = NULL,
      ignore.case = FALSE, value = FALSE, fixed = TRUE,
      useBytes = FALSE)

agrepl(pattern, x, max.distance = 0.1, costs = NULL,
       ignore.case = FALSE, fixed = TRUE, useBytes = FALSE)

参数

pattern

要匹配的非空字符串。对于 fixed = FALSE 这应该包含扩展的 regular expression 。如果可能的话,由 as.character 强制转换为字符串。

x

寻找匹配的字符向量。如果可能,由 as.character 强制转换为字符向量。

max.distance

一场比赛允许的最大距离。表示为整数,或表示为模式长度乘以最大转换成本的分数(将被不小于相应分数的最小整数替换),或包含可能组件的列表

cost

匹配成本的最大数量/分数(广义编辑距离)

all

所有转换的最大数量/分数(插入、删除和替换)

insertions

最大插入数量/分数

deletions

最大删除数量/分数

substitutions

最大替换次数/分数

如果未给出 cost ,则 all 默认为 10%,其他转换数范围默认为 all 。组件名称可以缩写。

costs

名称部分匹配 ‘ 的数字向量或列表⁠插入⁠', '⁠删除⁠' 和 '⁠替代品⁠’ 给出计算广义编辑距离的相应成本,或者NULL(默认)指示对所有三种可能的转换使用单位成本。通过强制转换为整数as.integer如果可能的话。

ignore.case

如果 FALSE ,则模式匹配区分大小写;如果 TRUE ,则在匹配过程中忽略大小写。

value

如果 FALSE ,则返回包含所确定的匹配的(整数)索引的向量,如果 TRUE ,则返回包含匹配元素本身的向量。

fixed

合乎逻辑的。如果TRUE(默认),则模式按字面匹配(按原样)。否则,将其作为正则表达式进行匹配。

useBytes

合乎逻辑的。在多字节语言环境中,比较应该是逐个字符(默认)还是逐个字节。

细节

Levenshtein 编辑距离用作近似度的度量:它是将一个字符串转换为另一个字符串所需的插入、删除和替换的总数(可能是 cost-weighted)。

它使用 Ville Laurikari (https://github.com/laurikari/tre) 的 tre 代码,该代码支持 MBCS 字符匹配。

useBytes 的主要作用是避免有关多字节语言环境中的无效输入和虚假匹配的错误/警告。它禁止带有标记编码的输入的转换,并且如果发现任何标记为 "bytes" 的输入(请参阅 Encoding ),则会强制执行。

agrep 返回一个向量,给出产生匹配的元素的索引,或者,如果 valueTRUE ,则返回匹配的元素(强制后,保留名称但不保留其他属性)。

agrepl 返回一个逻辑向量。

注意

由于不小心阅读说明的人甚至提交了错误报告,请注意,这匹配 x 的每个元素的子字符串(就像 grep 一样)而不是整个元素。另请参阅utils 包中的adist,它可以选择返回匹配子字符串的偏移量。

例子

agrep("lasy", "1 lazy 2")
agrep("lasy", c(" 1 lazy 2", "1 lasy 2"), max.distance = list(sub = 0))
agrep("laysy", c("1 lazy", "1", "1 LAZY"), max.distance = 2)
agrep("laysy", c("1 lazy", "1", "1 LAZY"), max.distance = 2, value = TRUE)
agrep("laysy", c("1 lazy", "1", "1 LAZY"), max.distance = 2, ignore.case = TRUE)

作者

Original version in R < 2.10.0 by David Meyer. Current version by Brian Ripley and Kurt Hornik.

也可以看看

grepadistaregexec() 提供了一个不同的接口来近似字符串匹配。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Approximate String Matching (Fuzzy Matching)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。