これは簡単な質問だと思いますが、R の初歩的な理解が足を引っ張っています。おそらく、文字列が変数の名前と同等ではないことに関係しています...
調査パッケージを使用して、コントラストとの相互作用を実行しようとしています。
se_race4 は、「1) 非ヒスパニック系白人」、「2) 黒人」、「3) ヒスパニック系」、「4) その他」の 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の値に変えるにはどうすればよいですか?