我正在尝试构建一个使用调查包计算一些差异的函数。问题是我需要将变量的名称(而不是变量的值)插入到特定的函数中(svyby)
是这样的:
myfun=function(variable) {
svyby(~variable,~subpop,design,svymean)
}
myfun(P16)
它给了我错误。我也试过
*base[,variable]*
而不是
*variable*
这里的问题base[,variable]
给了我带变量值的向量,但我需要在设计对象中读取变量的名称。我的意思是,我需要函数插入这样的名称
svyby(~P16,~subpop,design,svymean)
我将不胜感激任何帮助,谢谢你, 贡萨洛
答案 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)
。