【问题标题】:R: How to get and set named arguments in an expressionR:如何在表达式中获取和设置命名参数
【发布时间】:2015-01-20 15:11:02
【问题描述】:

我正在尝试了解如何使用 R 表达式。如果我有一个简单的表达式,例如exp <- quote(f(x=12)),那么exp[[1]] 返回函数f,而exp[[2]] 返回参数12,但我不知道如何获取参数名称, x。同样,我不知道如何以编程方式创建表达式f(x=12)(不使用quote)。

【问题讨论】:

  • 关于最后一部分,您可以使用call("f", x = 12) 组装没有quote 的调用

标签: r arguments expression named


【解决方案1】:

as.list()as.call(),将调用转换为列表,列表转换为调用,对于这种computing on the language是必不可少的:

names(as.list(exp)[2])
# [1] "x"

as.call(list(as.symbol("f"), x=12))
# f(x = 12)

exp["y"] <- 4
exp
# f(x = 12, y = 4)

【讨论】:

  • 你甚至不需要as.list。 “模式“表达式”的对象是一个列表”
  • 另外,为了避免问题中要求的quoteas.call(list(as.name("f"), x = 12))
  • @Roland -- 好点,谢谢。在实践中,我仍然认为使用as.list() 通常会有所帮助。 (比较exp[2]as.list(exp)[2]的打印结果,看看我的意思。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多