【发布时间】:2012-11-06 14:29:36
【问题描述】:
如何更改函数参数名称。例如使用替代我可以更改函数参数值或函数名称:
substitute(quote(F(x= A)), list(A= quote(B), F= quote(G)))
## result
quote(G(x = B))
但这不起作用:
substitute(quote(F(x= A)), list(x= quote(y)))
## result
quote(F(x = A))
# 编辑(@Joran 这里是真实的例子,可能不是那么真实,但非常接近我正在做的事情)
#
library("multcomp")
data("mtcars")
mtcars$gear <- factor(mtcars$gear)
mtcars$cyl <- factor(mtcars$cyl)
xv <- c("gear","cyl")
for(v in xv){
fo <- as.formula(paste("mpg",v,sep="~"))
fit <- lm(fo,data=mtcars)
print(eval(substitute(summary(glht(fit,linfct= mcp(vn="Dunnett"))),list(vn=v))))
}
【问题讨论】:
-
我也不会这样做。你真正想做的是什么?通常在 R 中,您可以使用
foo<- 'G'; bar<-'x' ; do.call(foo,bar)来根据字符串对象选择函数及其参数。 -
你真正想做什么?
-
@ Carl & Joran 所说的(“你真正想做的是什么?!”)。我自己会通过
formals()更改参数... -
@Carl Witthoft 你能写下你的答案吗
-
我认为您可能正在使用 multcomp。请参阅 Hadley 或我对 this question 的回答,这与您自己的基本相同。
标签: r