我有一个关于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 次 |
最近记录: |