我试图了解R中的反引号。
据我所知,R {/ p>的?Quotes
文档页面没有解释
例如,在R控制台:
"[["
# [1] "[["
`[[`
# .Primitive("[[")
它似乎正在返回相当于:
get("[[")
答案 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还提供了一些示例,说明如何在expressions,environments和functions中使用反引号。
答案 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)