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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。