从值获取R表达式(类似于enquote)

帕特里克·洛克斯

假设我有一个x(未知)类型的值(尤其是:标量,向量或列表)。我想获得代表该值的R表达式。如果这样的x == 1话,该函数应该简单地返回expression(1)为此x == c(1,2))函数应该返回expression(c(1,2))enquote功能与我想要功能非常接近,但不完全相同。

通过一些玩耍,我找到了解决问题的以下“解决方案”:

get_expr <- function(val) {
  tmp_expr <- enquote(val)
  tmp_expr[1] <- quote(expression())
  return(eval(tmp_expr))
}

get_expr(1) # returns expression(1)
get_expr(c(1, 2)) # returns expression(c(1, 2))
get_expr(list(x = 1)) # returns expression(list(x = 1))

但是我认为我的get_expr功能是某种黑客。从逻辑上讲,评估是不必要的。

有没有更优雅的方法可以做到这一点?据我所知,substitute这对我而言并不真正有效,因为我get_expr函数的参数可能是求值的结果(并且substitute(eval(expr))不进行求值)。

我通过找到了另一种方法parse(text = deparse(val)),但这甚至是一个糟糕的破解方法。

布罗迪

as.expression(list(...)) 似乎做到了:

> get_expr <- function(val) as.expression(list(val))
> str(get_expr(1))
  expression(1)
> str(get_expr(c(1, 2)))
  expression(c(1, 2))
> str(get_expr(list(x=1)))
  expression(list(x = 1))
> val <- list(x=1, y=2)
> str(get_expr(val))
  expression(list(x = 1, y = 2))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从块表达式退出?(类似于“返回”功能)

来自分类Dev

正则表达式类似于WordPress短代码

来自分类Dev

SSIS表达式类似于case语句

来自分类Dev

gitignore的类似于正则表达式的shell glob模式

来自分类Dev

Java Lambda表达式是否类似于Groovy闭包的逻辑?

来自分类Dev

评估/执行类似于js'eval()的Golang代码/表达式

来自分类Dev

Lua模式类似于正则表达式正向吗?

来自分类Dev

SQL或正则表达式,以匹配结尾类似于开始但相反的字符串

来自分类Dev

Swift中是否有类似于Python for else语法的表达式

来自分类Dev

正则表达式类似于Python中的赫斯特模式

来自分类Dev

Lua模式类似于正则表达式正向吗?

来自分类Dev

具有类似于文件名的表达式的.htaccess规则占用404页

来自分类Dev

我需要一个匹配类似于PHPDocs的正则表达式语句

来自分类Dev

如何在类似于Excel公式的SSRS报告中创建表达式?

来自分类Dev

使用类似于 sql 的正则表达式的搜索过滤器 Like 'a%'

来自分类Dev

Golang正则表达式可以处理类似于python的“二进制”正则表达式吗?

来自分类Dev

xpath 表达式以获取基于其他值的值

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

来自分类Dev

正则表达式:类似于 Slack 的“降价”,用于精确匹配一个格式字符

来自分类Dev

获取通过lambda表达式传递的嵌套属性的值

来自分类Dev

获取属性值的正则表达式

来自分类Dev

XPath表达式以获取标题属性中的值

来自分类Dev

正则表达式以获取SQL中的值

来自分类Dev

需要正则表达式以获取范围值

来自分类Dev

Excel-如何获取表达式文本而不是值

来自分类Dev

正则表达式以获取HTML属性的值

来自分类Dev

获取正则表达式的匹配值

来自分类Dev

PHP在正则表达式中获取分组值

Related 相关文章

  1. 1

    从块表达式退出?(类似于“返回”功能)

  2. 2

    正则表达式类似于WordPress短代码

  3. 3

    SSIS表达式类似于case语句

  4. 4

    gitignore的类似于正则表达式的shell glob模式

  5. 5

    Java Lambda表达式是否类似于Groovy闭包的逻辑?

  6. 6

    评估/执行类似于js'eval()的Golang代码/表达式

  7. 7

    Lua模式类似于正则表达式正向吗?

  8. 8

    SQL或正则表达式,以匹配结尾类似于开始但相反的字符串

  9. 9

    Swift中是否有类似于Python for else语法的表达式

  10. 10

    正则表达式类似于Python中的赫斯特模式

  11. 11

    Lua模式类似于正则表达式正向吗?

  12. 12

    具有类似于文件名的表达式的.htaccess规则占用404页

  13. 13

    我需要一个匹配类似于PHPDocs的正则表达式语句

  14. 14

    如何在类似于Excel公式的SSRS报告中创建表达式?

  15. 15

    使用类似于 sql 的正则表达式的搜索过滤器 Like 'a%'

  16. 16

    Golang正则表达式可以处理类似于python的“二进制”正则表达式吗?

  17. 17

    xpath 表达式以获取基于其他值的值

  18. 18

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  19. 19

    Visual Studio 2012中是否有“评估表达式”功能,类似于Android Studio中的选项?

  20. 20

    正则表达式:类似于 Slack 的“降价”,用于精确匹配一个格式字符

  21. 21

    获取通过lambda表达式传递的嵌套属性的值

  22. 22

    获取属性值的正则表达式

  23. 23

    XPath表达式以获取标题属性中的值

  24. 24

    正则表达式以获取SQL中的值

  25. 25

    需要正则表达式以获取范围值

  26. 26

    Excel-如何获取表达式文本而不是值

  27. 27

    正则表达式以获取HTML属性的值

  28. 28

    获取正则表达式的匹配值

  29. 29

    PHP在正则表达式中获取分组值

热门标签

归档