将变量名称插入R中的函数

时间:2015-09-24 19:48:43

标签: r survey

我正在尝试构建一个使用调查包计算一些差异的函数。问题是我需要将变量的名称(而不是变量的值)插入到特定的函数中(svyby)

是这样的:

myfun=function(variable) {
svyby(~variable,~subpop,design,svymean)
}

myfun(P16)

它给了我错误。我也试过

*base[,variable]*

而不是

*variable*

这里的问题base[,variable]给了我带变量值的向量,但我需要在设计对象中读取变量的名称。我的意思是,我需要函数插入这样的名称

svyby(~P16,~subpop,design,svymean)

我将不胜感激任何帮助,谢谢你, 贡萨洛

1 个答案:

答案 0 :(得分:4)

看起来需要一个公式。您可以将"~"粘贴到字符串中并使用as.formula,如下所示:

myfun = function(variable) {
    svyby(as.formula(paste("~", variable)),
          ~subpop, design, svymean)
}

然后打电话是这样的:myfun("P16")。请注意,您需要使用带引号的列名,因为您将其视为字符串。

或者,您可以让您的函数采用公式:

myfun2 = function(formula) {
    svyby(formula,
          ~subpop, design, svymean)
}

并称之为:myfun2(~P16)