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

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

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

例如,在 R 控制台:

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

它似乎返回了等价于:

get("[[")

【问题讨论】:

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

标签: r syntax backticks


【解决方案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 还提供了一些关于如何在 expressionsenvironmentsfunctions 中使用反引号的示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 2018-04-05
        • 2011-08-25
        • 2016-02-24
        相关资源
        最近更新 更多