反引号在 R 中有啥作用?

Posted

技术标签:

【中文标题】反引号在 R 中有啥作用?【英文标题】:What do backticks do in R?反引号在 R 中有什么作用? 【发布时间】:2016-07-13 06:16:45 【问题描述】:

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

据我所知,这在 R 的 ?Quotes 文档页面中没有解释。

例如,在 R 控制台:

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

它似乎返回了等价于:

get("[[")

【问题讨论】:

help("`") 可能是正确的 help("`") 显示与?Quotes 相同的文档页面,这并不完全清楚 在 q 中错过了这一点。道歉。但这是对它的作用的一个很好的解释。 【参考方案1】:

它们等同于逐字记录。例如...试试这个:

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

报错

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

不报错

【讨论】:

【参考方案2】:

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

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

提取元素一,通常的方式

temp[[1]]

使用[[函数提取元素一

`[[`(temp,1)

【讨论】:

【参考方案3】:

一对反引号是一种引用名称或符号组合的方式,这些名称或符号组合是保留的或非法的。保留是像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 中使用反引号的示例。

【讨论】:

以上是关于反引号在 R 中有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

反引号和单引号有啥区别?我可以在上面的查询中使用 IF 语句吗?

Hive SQL中关于反引号的使用

在 shell 中的双引号字符串中转义反引号

JavaScript 中反引号 (`) 的使用

反引号-特辑

(转)mysql创建表时反引号的作用