當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。