反引号在 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 中有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章