R中的公式:如何以通用方式使用它们?

时间:2015-09-14 14:35:20

标签: r formula

有没有办法在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而不是我实际尝试访问的变量。所以它无论如何都不能用我想要的方式。

有没有正确的方法呢?

任何帮助将不胜感激!

0 个答案:

没有答案