我想用均值= 7来评估f
mean=7
f <- expression(-(x-mean)^2/2)
然后得到一个新的表达式:
-(x-7)^2/2
我怎么能这样做?感谢。
答案 0 :(得分:2)
这是一种方式。
f <- as.call(f)
eval(substitute(substitute(expr, list(mean=7)), list(expr= f)))
# -(x - 7)^2/2()
如果这种结构让人感到精神恍惚,你就不需要感到孤独:即使是编写R手册的人也会把你在这里提出的问题称为"a puzzle"。
答案 1 :(得分:0)
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
函数中构建的。
答案 2 :(得分:0)
在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
...所以你必须诉诸@JoshO'Brien建议的东西。考虑使用R core将其记录为功能请求; - )