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


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