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


R abbreviate 縮寫字符串


R語言 abbreviate 位於 base 包(package)。

說明

將字符串縮寫為至少 minlength 字符,以便它們保持唯一(如果它們是),除非 strict = TRUE

用法

abbreviate(names.arg, minlength = 4, use.classes = TRUE,
           dot = FALSE, strict = FALSE,
           method = c("left.kept", "both.sides"), named = TRUE)

參數

names.arg

要縮寫的名稱的字符向量,或由 as.character 強製轉換為字符向量的對象。

minlength

縮寫的最小長度。

use.classes

邏輯:應該先刪除小寫字符嗎?

dot

邏輯:應該添加一個點(".")嗎?

strict

邏輯:是否應該嚴格遵守minlength?請注意,設置 strict = TRUE 可能會返回非唯一字符串。

method

指定與默認 "left.kept" 一起使用的方法的字符串,請參閱下麵的“詳細信息”。允許部分匹配。

named

邏輯:應該返回names(帶有原始向量)。

細節

使用的默認算法 ( method = "left.kept" ) 與 S 的算法類似。對於單個字符串,其工作原理如下。字符串末尾的第一個空格被刪除。然後(如果需要)任何其他空格都會被刪除。接下來,刪除小寫元音,然後刪除小寫輔音。最後,如果縮寫仍然長於minlength,則大寫字母和符號將被刪除。

字符總是首先從字符串末尾剝離。如果 names.arg 的某個元素包含多個單詞(單詞之間用空格分隔),則每個單詞至少會保留一個字母。

缺失 (NA) 值保持不變。

如果use.classesFALSE,則唯一的區別是字母和空格之間。

一個字符向量,其中第一個參數中包含字符串的縮寫。原始 names.arg 中的重複項將被賦予相同的縮寫。如果任何非重複元素具有相同的 minlength 縮寫,則如果 method = "both.sides" 將基本內部 abbreviate() 算法應用於按字符反轉的字符串;如果仍然存在重複的縮寫,並且默認情況下為 strict = FALSE,則 minlength 會遞增 1,並且僅為這些元素找到新縮寫。重複此過程,直到 names.arg 的所有唯一元素都具有唯一縮寫。

如果 names 為 true,則 names.arg 的字符版本將作為 names 屬性附加到返回值:不保留其他屬性。

如果輸入元素包含非 ASCII 字符,則相應的值將采用 UTF-8 格式並如此標記(請參閱 Encoding )。

警告

如果use.classes是 true (默認值),這實際上隻適用於英語,並且之前R3.3.0 無法在多字節語言環境中正確處理非 ASCII 字符。如果與非 ASCII 字符一起使用(並且需要減少長度),它將發出警告。它不太可能與不在 Unicode 基本多語言平麵中的輸入以及在寬字符未以 Unicode 編碼的(罕見)平台上良好地配合。

來自R3.3.0 ‘vowel’ 的概念是從英語元音擴展而來,包括小寫英語元音的重音版本字符(包括“帶有筆劃的 o”)。當然,有些語言(甚至是威爾士語等西歐語言)也有其他元音。

例子

x <- c("abcd", "efgh", "abce")
abbreviate(x, 2)
abbreviate(x, 2, strict = TRUE) # >> 1st and 3rd are == "ab"

(st.abb <- abbreviate(state.name, 2))
stopifnot(identical(unname(st.abb),
           abbreviate(state.name, 2, named=FALSE)))
table(nchar(st.abb)) # out of 50, 3 need 4 letters :
as <- abbreviate(state.name, 3, strict = TRUE)
as[which(as == "Mss")]

## and without distinguishing vowels:
st.abb2 <- abbreviate(state.name, 2, FALSE)
cbind(st.abb, st.abb2)[st.abb2 != st.abb, ]

## method = "both.sides" helps:  no 4-letters, and only 4 3-letters:
st.ab2 <- abbreviate(state.name, 2, method = "both")
table(nchar(st.ab2))
## Compare the two methods:
cbind(st.abb, st.ab2)

也可以看看

substr

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Abbreviate Strings。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。