我想用mean=7对f求值
mean=7
f <- expression(-(x-mean)^2/2)然后得到一个新的表达式:
-(x-7)^2/2我怎么能做到呢?谢谢。
发布于 2012-02-09 05:07:04
gsub怎么样?
avg <- 7
f <- expression(-(x-avg)^2/2)
f.new <- as.expression(gsub('avg',avg,f))
expression("-(x - 7)^2/2")另外,您应该避免使用mean或data这样的名称定义变量,因为它们是在R函数中构建的。
发布于 2012-02-09 05:09:22
这里有一种方法。
f <- as.call(f)
eval(substitute(substitute(expr, list(mean=7)), list(expr= f)))
# -(x - 7)^2/2()如果这种构造让人费解,那么您不需要感到孤单:即使是编写R手册的人也将您在这里提出的问题称为"a puzzle"。
发布于 2012-02-09 05:29:33
在S-Plus中,substitute函数有一个额外的evaluate参数,因此非常简单。不幸的是,R遗漏了这个论点...
# in S-Plus:
x <- expression(-(x-mean)^2/2)
substitute(x, list(mean=7), evaluate=TRUE)
#-(x - 7)^2/2...so你必须求助于@JoshO‘’Brien建议的东西。考虑将此记录为具有R核心的功能请求;-)
https://stackoverflow.com/questions/9201269
复制相似问题