R中的反引号有什么作用?

Meg*_*ron 23 syntax r backticks

我试图理解R中的反引号.

据我所知,这在?QuotesR. 的文档页面中没有解释.

例如,在R控制台:

"[["
# [1] "[["
`[[`
# .Primitive("[[")
Run Code Online (Sandbox Code Playgroud)

它似乎返回相当于:

get("[[")
Run Code Online (Sandbox Code Playgroud)

jai*_*ash 24

一对反引号是一种引用其他保留或非法的符号名称或符号组合的方法.保留的是像if语言一部分的单词,而非法包括非语法组合c a t.这两个类别,保留和非法,在R文档中称为non-syntactic names.

从而,

`c a t` <- 1 # is valid R
Run Code Online (Sandbox Code Playgroud)

> `+` # is equivalent to typing in a syntactic function name
function (e1, e2)  .Primitive("+")
Run Code Online (Sandbox Code Playgroud)

作为一个提到的评论者,?Quotes确实包含了关于反引号的一些信息Names and Identifiers:

`c a t` <- 1 # is valid R
Run Code Online (Sandbox Code Playgroud)

这篇散文有点难以解析.这意味着,对于R来解析一个令牌作为名称,它必须是1)一系列字母数字,句点和下划线,2)不是语言中的保留字.否则,要解析为名称,必须使用反引号.

还可以看看.:

> `+` # is equivalent to typing in a syntactic function name
function (e1, e2)  .Primitive("+")
Run Code Online (Sandbox Code Playgroud)

此外,Advanced R还有一些关于如何在表达式,环境函数中使用反引号的示例.


Ami*_*hli 6

它们相当于逐字.例如......试试这个:

df <- data.frame(20a=c(1,2),b=c(3,4))
Run Code Online (Sandbox Code Playgroud)

给出错误

df <- data.frame(`20a`=c(1,2),b=c(3,4))
Run Code Online (Sandbox Code Playgroud)

没有给出错误


lmo*_*lmo 5

这是使用不当词汇的不完整答案:反引号可以向 R 表明您正在以非标准方式使用函数。例如,这里是使用[[,列表子集功能:

temp <- list("a"=1:10, "b"=rnorm(5))
Run Code Online (Sandbox Code Playgroud)

提取元素一,通常的方式

temp[[1]]
Run Code Online (Sandbox Code Playgroud)

使用[[函数提取元素一

`[[`(temp,1)
Run Code Online (Sandbox Code Playgroud)