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


R chartr 字符翻译和装箱


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

说明

翻译字符向量中的字符,特别是从大写到小写,反之亦然。

用法

chartr(old, new, x)
tolower(x)
toupper(x)
casefold(x, upper = FALSE)

参数

x

字符向量,或可以通过 as.character 强制转换为字符的对象。

old

指定要翻译的字符的字符串。如果提供长度为 2 或以上的字符向量,则使用第一个元素时会发出警告。

new

指定翻译的字符串。如果提供长度为 2 或以上的字符向量,则使用第一个元素时会发出警告。

upper

逻辑:翻译为大写还是小写?

细节

chartrold 中指定的 x 中的每个字符转换为 new 中指定的相应字符。规范中支持范围,但不支持字符类和重复字符。如果 old 包含的字符多于新字符,则会发出错误信号;如果它包含的字符较少,则忽略 new 末尾的多余字符。

tolowertoupper 将字符向量中的大写字符转换为小写字符,反之亦然。非字母字符保持不变。可以将多个字符映射到单个大写字符。

casefoldtolowertoupper 的包装,旨在与 S-PLUS 兼容。

x 具有相同长度和相同属性的字符向量(在可能的强制转换之后)。

如果相应的输入具有已声明的编码并且当前区域设置为 Latin-1 或 UTF-8,则结果元素的编码将声明为当前区域设置的编码(请参阅 Encoding )。结果将采用当前区域设置的编码,除非相应的输入采用 UTF-8 或 Latin-1,而此时它将采用 UTF-8。

注意

这些函数与平台相关,通常使用操作系统服务。后者可能有很大缺陷,例如仅覆盖 8 位语言环境中的 ASCII 字符。 ‘alphabetic’ 的定义取决于平台,并且可能会随着时间的推移而更改,因为大多数平台都基于 frequently-updated Unicode 表。

例子

x <- "MiXeD cAsE 123"
chartr("iXs", "why", x)
chartr("a-cX", "D-Fw", x)
tolower(x)
toupper(x)

## "Mixed Case" Capitalizing - toupper( every first letter of a word ) :

.simpleCap <- function(x) {
    s <- strsplit(x, " ")[[1]]
    paste(toupper(substring(s, 1, 1)), substring(s, 2),
          sep = "", collapse = " ")
}
.simpleCap("the quick red fox jumps over the lazy brown dog")
## ->  [1] "The Quick Red Fox Jumps Over The Lazy Brown Dog"

## and the better, more sophisticated version:
capwords <- function(s, strict = FALSE) {
    cap <- function(s) paste(toupper(substring(s, 1, 1)),
                  {s <- substring(s, 2); if(strict) tolower(s) else s},
                             sep = "", collapse = " " )
    sapply(strsplit(s, split = " "), cap, USE.NAMES = !is.null(names(s)))
}
capwords(c("using AIC for model selection"))
## ->  [1] "Using AIC For Model Selection"
capwords(c("using AIC", "for MODEL selection"), strict = TRUE)
## ->  [1] "Using Aic"  "For Model Selection"
##                ^^^        ^^^^^
##               'bad'       'good'

## -- Very simple insecure crypto --
rot <- function(ch, k = 13) {
   p0 <- function(...) paste(c(...), collapse = "")
   A <- c(letters, LETTERS, " '")
   I <- seq_len(k); chartr(p0(A), p0(c(A[-I], A[I])), ch)
}

pw <- "my secret pass phrase"
(crypw <- rot(pw, 13)) #-> you can send this off

## now ``decrypt'' :
rot(crypw, 54 - 13) # -> the original:
stopifnot(identical(pw, rot(crypw, 54 - 13)))

也可以看看

subgsub 用于字符串中的其他替换。

相关用法


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