我确信这是一个简单的问题,但我对 R 的基本理解阻碍了我。它可能与不等于变量名称的字符串有关......
我正在尝试使用调查包与对比进行交互。
se_race4 是一个因子变量,有 4 个类别:“1)非西班牙裔白人”、“2)黑人”、“3)西班牙裔”、“4)其他”
我像这样运行模型:
mod1 <- lm(sysbp ~ pmper10*se_race4 + age_baseline, data=mydata)
然后我看一些对比:
svycontrast(mod1,c("pmper10"=1)
以下命令有效:
svycontrast(mod1,c("pmper10"=1,"pmper10:se_race42) Black"=1))
svycontrast(mod1,c("pmper10"=1,"pmper10:se_race43) Hispanic"=1))
svycontrast(mod1,c("pmper10"=1,"pmper10:se_race44) Other"=1))
但这不是(即使 'z' 看起来就像上面的字符串):
for(z in grep("pmper10:se_race4",names(coef(mod1)),value=TRUE)) {
svycontrast(mod1,c("pmper10"=1, z=1))
}
R给了我错误:
Error in match.names(names(coef(stat)), contrasts) : names not matched
我错过了什么?
编辑:结果names(coef(mod1))
:
[1] "(Intercept)" "pmper10"
[3] "se_race42) Black" "se_race43) Hispanic"
[5] "se_race44) Other" "age_baseline"
[7] "pmper10:se_race42) Black" "pmper10:se_race43) Hispanic"
[9] "pmper10:se_race44) Other"
结果names(c("pmper10"=1, z=1))
[1] "pmper10" "z"
的结果z
[1] "pmper10:se_race44) Other"
这看起来不太对!我如何让“z”变成z的值?