gpt4 book ai didi

r - r 中的 parse() 和 as.expression() 有什么区别

转载 作者:行者123 更新时间:2023-12-04 09:25:44 25 4
gpt4 key购买 nike

举个简单的例子。

expr <- 'mpg*2 + cyl*3 + disp*4'
我转换 expr作为表达式并对其进行评估。
expr2 <- parse(text = expr)
class(expr2)
mtcars %>% mutate(new_var = eval(expr2))
然后我尝试了另一种方法,但是 new_var只是一个字符向量。
expr3 <- as.expression(expr)
class(expr3)
mtcars %>% mutate(new_var = eval(expr3))
eval帮助文档说:

Evaluate an R expression in a specified environment.


两者 expr2expr3是表达,为什么结果不同。 parse帮助文档说:

parse() returns the parsed but unevaluated expressions in an expression, a “list” of calls.


我不知道是什么 解析 什么是 未评估 .
有人能解释一下吗?
任何帮助将不胜感激!

最佳答案

parse从文本输入创建表达式,这可能是您所期望的。
来自 as.expression documentation , as.expression试图将其参数强制转换为表达式。
这是什么意思?

test <- 1
expr <- parse(text="test + 1")
expr
#> expression(test + 1)
eval(expr)
#> [1] 2

expr <- as.expression("test + 1")
expr
#> expression("test + 1")
eval(expr)
#> [1] "test + 1"

expr <- as.expression(test+1)
expr
#> expression(2)
eval(expr)
#> [1] 2
创建于 2020-07-21 由 reprex package (v0.3.0)
正如你所看到的,文本参数不是强制的,因为它没有被解析,所以它保持不变。

关于r - r 中的 parse() 和 as.expression() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63019053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com