gpt4 book ai didi

r - 通过字符串定义曲线()

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

早上好,

我被困在 R 中字符串和表达式之间的类型转换。我想绘制一条曲线(使用 curve() 函数),其中一个由字符串定义的方程如下:

curve(x^3)
## Ok, generates a curve as expected

qq<-"x^3"
curve(qq)
Error in UseMethod("qq") :
no applicable method for 'qq' applied to an object of class "c('double', 'numeric')"

我可以理解,第一个 arg 应该是一个表达式。
curve(expr=expression(qq))
Error in curve(expr = expression(qq)) :
'expr' must be a function, or a call or an expression containing 'x'

我无法理解:我对这个人的 expression() 的理解是
“... expression 返回一个包含其参数(未计算)的“表达式”类型的向量。”

那么,我必须怎么做才能用由字符串 qq 的内容定义的方程来绘制曲线?

谢谢

杰夫

最佳答案

curve替换一开始的表达式:

substitute(expression(qq))
#expression(qq)
形成这个它无法推断它需要什么:
all.vars(substitute(expression(qq)))
#[1] "qq"

all.vars(substitute(x^3))
#[1] "x"
我认为你需要可怕的 eval(parse()) :
x <- 1:10
qq <- "x^3"
ff <- as.function(alist(x=, eval(parse(text=qq))))
curve(ff)
编辑 (2020-09-21):
6 多年后,我会以不同的方式做这件事。我不喜欢 eval(parse())ing qq因为它会造成不必要的安全风险。相反,我会将它代入调用并评估对 curve 的调用。 .
qq <- parse(text = qq)[[1]]
eval(substitute(curve(qq), list(qq = qq)))

关于r - 通过字符串定义曲线(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648059/

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