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


R Quotes 引号


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

说明

引用的各种用途的说明R.

细节

三种类型的引号是语法的一部分R:单引号和双引号以及反引号(或反引号,‘⁠`⁠’)。此外,反斜杠用于转义字符常量中的后续字符。

字符常量

单引号和双引号分隔字符常量。它们可以互换使用,但首选双引号(并且使用双引号打印字符常量),因此单引号通常仅用于分隔包含双引号的字符常量。

反斜杠用于在字符常量内开始转义序列。转义下表中没有的字符是错误的。

单引号在单引号字符串中需要用反斜杠转义,在双引号字符串中需要用双引号转义。

'⁠\n⁠换行符(又名“换行符”)
'⁠\r⁠回车
'⁠\t⁠ tab
'⁠\b⁠ backspace
'⁠\a⁠警报(响铃)
'⁠\f⁠换页
'⁠\v⁠垂直制表符
'⁠\\⁠反斜杠‘⁠\⁠
'⁠\'⁠ASCII 撇号 ‘⁠′⁠
'⁠\”⁠ASCII 引号 ‘⁠”⁠
'⁠\`⁠ASCII 重音符号(反引号)‘⁠`⁠
'⁠\nnn⁠具有给定八进制代码的字符(1、2 或 3 位数字)
'⁠\xnn⁠具有给定十六进制代码的字符(1 或 2 个十六进制数字)
'⁠\unnnn⁠具有给定代码的 Unicode 字符(1--4 十六进制数字)
'⁠\Unnnnnnnnn⁠具有给定代码的 Unicode 字符(1--8 十六进制数字)

最后两个的替代形式是‘⁠\u{nnnn}⁠' 和 '⁠\U{nnnnnnnn}⁠’。读取字符串时,除了 Unicode 转义序列之外的所有序列都受支持scanread.table如果allowEscapes = TRUE。 Unicode 转义可用于输入不在当前区域设置的字符集中的 Unicode 字符(当字符串将以 UTF-8 内部存储时)。 ‘的最大允许值⁠\nnn⁠' 是 '⁠\377⁠’(与‘相同的字符⁠\xff⁠’)。

来自R4.1.0 允许的最大‘⁠\U⁠' 值为 '⁠\U10FFFF⁠’,最大 Unicode 点。

解析器不允许在单个字符串中同时使用八进制/十六进制和 Unicode 转义。

print.default 在输出不可打印字符(包括反斜杠)时也会使用这些形式。

字符串中不允许嵌入 NULL,因此使用转义符(如 ‘⁠\0⁠’) 对于 nul 将导致字符串在该点被截断(通常会出现警告)。

原始字符常量也可以使用类似于 C++ 中使用的语法来获取:r"(...)"...任何字符序列,但它不能包含结束序列‘⁠)“⁠’。分隔符对[]{}也可以使用,并且R可以用来代替r。为了提高灵活性,可以在开始引号和开始分隔符之间放置多个破折号,只要结束分隔符和结束引号之间出现相同数量的破折号即可。

名称和标识符

标识符由一系列字母、数字、句点 (.) 和下划线组成。它们不能以数字或下划线开头,也不能以句点后跟数字开头。 Reserved 单词不是有效标识符。

字母的定义取决于当前区域设置,但只有 ASCII 数字被视为数字。

此类标识符也称为句法名称并且可以直接用于R代码。几乎总是可以使用其他名称,只要它们被引用即可。首选引号是反引号(‘⁠`⁠'), 和deparse通常会使用它,但在许多情况下可以使用单引号或双引号(因为字符常量通常会转换为名称)。反引号可能必不可少的一个地方是在公式中分隔变量名称:请参阅formula.

注意

‘中的 UTF-16 代理对⁠\unnnn\uoooo⁠' 形式将被转换为单个 Unicode 点,例如 '⁠\uD834\uDD1E⁠' 给出单个字符 '⁠\U1D11E⁠’。但是,代理项范围内的未配对值(例如字符串中的值)"abc\uD834de"将被转换为不符合标准的 UTF-8 字符串(正如大多数其他软件所做的那样):这可能会在将来发生变化。

例子


'single quotes can be used more-or-less interchangeably'
"with double quotes to create character vectors"

## Single quotes inside single-quoted strings need backslash-escaping.
## Ditto double quotes inside double-quoted strings.
##
identical('"It\'s alive!", he screamed.',
          "\"It's alive!\", he screamed.") # same

## Backslashes need doubling, or they have a special meaning.
x <- "In ALGOL, you could do logical AND with /\\."
print(x)      # shows it as above ("input-like")
writeLines(x) # shows it as you like it ;-)

## Single backslashes followed by a letter are used to denote
## special characters like tab(ulator)s and newlines:
x <- "long\tlines can be\nbroken with newlines"
writeLines(x) # see also ?strwrap

## Backticks are used for non-standard variable names.
## (See make.names and ?Reserved for what counts as
## non-standard.)
`x y` <- 1:5
`x y`
d <- data.frame(`1st column` = rchisq(5, 2), check.names = FALSE)
d$`1st column`

## Backslashes followed by up to three numbers are interpreted as
## octal notation for ASCII characters.
"\110\145\154\154\157\40\127\157\162\154\144\41"

## \x followed by up to two numbers is interpreted as
## hexadecimal notation for ASCII characters.
(hw1 <- "\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")

## Mixing octal and hexadecimal in the same string is OK
(hw2 <- "\110\x65\154\x6c\157\x20\127\x6f\162\x6c\144\x21")

## \u is also hexadecimal, but supports up to 4 digits,
## using Unicode specification.  In the previous example,
## you can simply replace \x with \u.
(hw3 <- "\u48\u65\u6c\u6c\u6f\u20\u57\u6f\u72\u6c\u64\u21")

## The last three are all identical to
hw <- "Hello World!"
stopifnot(identical(hw, hw1), identical(hw1, hw2), identical(hw2, hw3))

## Using Unicode makes more sense for non-latin characters.
(nn <- "\u0126\u0119\u1114\u022d\u2001\u03e2\u0954\u0f3f\u13d3\u147b\u203c")

## Mixing \x and \u throws a _parse_ error (which is not catchable!)
## Not run: 
  "\x48\u65\x6c\u6c\x6f\u20\x57\u6f\x72\u6c\x64\u21"

## End(Not run)
##   -->   Error: mixing Unicode and octal/hex escapes .....

## \U works like \u, but supports up to six hex digits.
## So we can replace \u with \U in the previous example.
n2 <- "\U0126\U0119\U1114\U022d\U2001\U03e2\U0954\U0f3f\U13d3\U147b\U203c"
stopifnot(identical(nn, n2))

## Under systems supporting multi-byte locales (and not Windows),
## \U also supports the rarer characters outside the usual 16^4 range.
## See the R language manual,
## https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Literal-constants
## and bug 16098 https://bugs.r-project.org/show_bug.cgi?id=16098
## This character may or not be printable (the platform decides)
## and if it is, may not have a glyph in the font used.
"\U1d4d7" # On Windows this used to give the incorrect value of "\Ud4d7"

## nul characters (for terminating strings in C) are not allowed (parse errors)
## Not run: 
  "foo\0bar"     # Error: nul character not allowed (line 1)
  "foo\u0000bar" # same error

## End(Not run)

## A Windows path written as a raw string constant:
r"(c:\Program files\R)"

## More raw strings:
r"{(\1\2)}"
r"(use both "double" and 'single' quotes)"
r"---(\1--)-)---"

也可以看看

Syntax 用于语法的其他方面。

sQuote 用于引用英文文本。

shQuote 用于引用操作系统命令。

“R 语言定义”手册。

相关用法


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