我有一个关于svycontrast()使用survey包调用函数中的变量的问题。我正在尝试针对固定参数自动进行一些对比。我可以这样做没有问题:
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
Run Code Online (Sandbox Code Playgroud)
但是,我花了几个小时试图弄清楚如何调用rowname“1”,但是通过不同的方法,我不断收到以下错误消息:
row <- quote(1)
svycontrast(diff, quote(row - parameter))
Error in row - parameter : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
您可以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
Run Code Online (Sandbox Code Playgroud)
我认为你可以使用bquote而不是quote这里
> row <- 1
> svycontrast(diff, bquote(.(as.name(row)) - parameter))
nlcon SE
contrast 2.8182 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |