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

时间:2016-03-25 13:25:28

标签: r syntax backticks

我试图了解R中的反引号。

据我所知,R {/ p>的?Quotes文档页面没有解释

例如,在R控制台:

"[["
# [1] "[["
`[[`
# .Primitive("[[")

它似乎正在返回相当于:

get("[[")

3 个答案:

答案 0 :(得分:20)

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

因此,

`c a t` <- 1 # is valid R

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

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

  

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

     

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

     

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

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

同时查看?Reserved

  

引号外的保留字总是被解析为对“描述”中链接的对象的引用,因此不允许它们作为语法名称(参见make.names)。它们被允许作为非语法名称,例如内部引号引号。

此外,Advanced R还提供了一些示例,说明如何在expressionsenvironmentsfunctions中使用反引号。

答案 1 :(得分:5)

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

df <- data.frame(20a=c(1,2),b=c(3,4))

给出错误

df <- data.frame(`20a`=c(1,2),b=c(3,4))

没有错误

答案 2 :(得分:3)

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

temp <- list("a"=1:10, "b"=rnorm(5))

提取元素一,通常的方式

temp[[1]]

使用[[函数

提取元素一
`[[`(temp,1)