有没有办法在R中以通用方式使用公式(不进行解析)?我想将一些使用公式的软件包中的函数调用到自制函数中,可能嵌套在其他自制函数中。
以下是我尝试使用survey
包(摘自文档)的示例:
library('survey')
data(api)
dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
svymean(~api00, dclus1, deff=TRUE)
我想用更通用的东西替换~api00
。有很多方法可以通过解析表达式(我发现它非常丑陋),但它不够健壮,特别是在“嵌套”函数中。让我说我想要像:
func1 <- function(myvar, dclus) {
return(func2(myvar, dclus))
}
与
func2 <- function(var, dclus) {
return(svymean(~var, dclus))
}
如果我这样做:
func2 <- function(var, dclus) {
return(eval(parse(text=paste("svymean(~", var, ", ",
deparse(substitute(dclus), ")", sep=""))
}
如果我直接致电func2
,它会有效,但如果我致电func1
则不会,因为它会获得myvar
而不是我实际尝试访问的变量。所以它无论如何都不能用我想要的方式。
有没有正确的方法呢?
任何帮助将不胜感激!