在 R Survey 包中将表达式作为参数传递
Pass expression as argument in R Survey package
我有一个关于使用 survey
包在 svycontrast()
函数中调用变量的问题。
我正在尝试针对固定参数自动进行一些对比。我可以做到这一点没问题:
library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
diff <- svyby(~enroll, by = ~cnum, dclus1, na.rm.all = FALSE, svymean, covmat = T, vartype = "se")
parameter <- 550
svycontrast(diff, quote(`1` - parameter))
# nlcon SE
# contrast 2.8182 0
然而,我花了好几个小时试图弄清楚如何称呼 rowname
`1`,但通过不同的方法,我主要收到以下错误消息:
row <- quote(1)
svycontrast(diff, quote(row - parameter))
Error in row - parameter : non-numeric argument to binary operator
非常感谢任何帮助。
您可以将 substitute
与 as.symbol
结合使用:
row <- 1
substitute(row - parameter, list(row = as.symbol(row)))
# `1` - parameter
svycontrast(diff, substitute(row - parameter, list(row = as.symbol(row))))
# nlcon SE
#contrast 2.8182 0
我想你可以在这里使用 bquote
而不是 quote
> row <- 1
> svycontrast(diff, bquote(.(as.name(row)) - parameter))
nlcon SE
contrast 2.8182 0
我有一个关于使用 survey
包在 svycontrast()
函数中调用变量的问题。
我正在尝试针对固定参数自动进行一些对比。我可以做到这一点没问题:
library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
diff <- svyby(~enroll, by = ~cnum, dclus1, na.rm.all = FALSE, svymean, covmat = T, vartype = "se")
parameter <- 550
svycontrast(diff, quote(`1` - parameter))
# nlcon SE
# contrast 2.8182 0
然而,我花了好几个小时试图弄清楚如何称呼 rowname
`1`,但通过不同的方法,我主要收到以下错误消息:
row <- quote(1)
svycontrast(diff, quote(row - parameter))
Error in row - parameter : non-numeric argument to binary operator
非常感谢任何帮助。
您可以将 substitute
与 as.symbol
结合使用:
row <- 1
substitute(row - parameter, list(row = as.symbol(row)))
# `1` - parameter
svycontrast(diff, substitute(row - parameter, list(row = as.symbol(row))))
# nlcon SE
#contrast 2.8182 0
我想你可以在这里使用 bquote
而不是 quote
> row <- 1
> svycontrast(diff, bquote(.(as.name(row)) - parameter))
nlcon SE
contrast 2.8182 0