【问题标题】:How can I make c return an expression?如何让 c 返回一个表达式?
【发布时间】:2020-07-01 17:49:36
【问题描述】:

c 的文档声称:

"输出类型由层次结构中组件的最高类型确定 NULL "

但是当我给它一个表达式时,我得到的很明显是一个列表:

> c(1,quote(5+2),3)
[[1]]
[1] 1

[[2]]
5 + 2

[[3]]
[1] 3

> typeof(c(1,quote(5+2),3))
[1] "list"
> is.list(c(1,quote(5+2),3))
[1] TRUE

那么它应该为什么输入返回一个表达式?我试图为它提供一个函数,但这似乎属于“而非向量组件(如名称和调用)被视为单元素列表”规则,因此给了我一个列表。

【问题讨论】:

    标签: r list concatenation expression


    【解决方案1】:

    quote() 不返回表达式,它返回各种不同的类型。在您的情况下,它返回 "language" 类型的东西(这实际上是一个未评估的函数调用)。使用expression(5+2) 获取表达式,它是包含在特殊标记列表中的语言(或其他事物)。

    例如,

    > c(1,expression(5+2),3)
    expression(1, 5 + 2, 3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2012-10-24
      相关资源
      最近更新 更多