ここで明らかな何かが欠けていると確信しています。ループを使用して入力を数式に変更し、その数式を含むものを生成しようとしていますglht
。(glht
=一般的な線形仮説検定)。皆さんありがとう!
df2 <- data.frame(f1=seq(1:5),f2=seq(4,8), y=sample(x=c(0,1),size=5,replace=TRUE))
df2 <- data.frame(lapply(df2,factor)) # convert to factors
library(multcomp)
for (i in 1:(length(df2)-1)){
fmla <- as.formula( paste("y~",colnames(df2)[i],sep=""))
fm1 <- glm (fmla, family = binomial("logit"), data=df2)
}
これだけはうまくいきます。今、私は動的にパスインしf1
て以下の行を作成しようとしています:
tuk <- glht(fm1, linfct=mcp(f1 ="Tukey"))
私が試してみました:
tuk <- glht(fm1,linfct=mcp(colnames(df2)[i] ="Tukey"))
しかし、これは次のようになります。
Error: unexpected '=' in " tuk <- glht(fm1,linfct=mcp(colnames(df2)[i] ="
これはと関係があると思いましたparse/eval
。だから私は試しました:
e1 <- paste("fm1,linfct=mcp(",colnames(df2)[i],"=Tukey)",sep="")
glht(e1)
与える:
Error in object$coefficients : $ operator is invalid for atomic vectors
Error in modelparm.default(model, ...) : no 'coef' method for 'model' found!
次に試してみました:
e1 <- parse(text=paste("fm1,linfct=mcp(",colnames(df2)[i],"=Tukey)",sep="") )
glht(e1)
与える:
Error in parse.default(text = paste("fm1,linfct=mcp(", colnames(df2)[i], :
<text>:1:4: unexpected ','
1: fm1,
^
ついに:
e1 <- as.expression(paste("fm1,linfct=mcp(",colnames(df2)[i],"=Tukey)",sep="") )
glht(e1)
与える:
Error in UseMethod("vcov") : no applicable method for 'vcov' applied to an object of class "expression"
Error in modelparm.default(model, ...) : no 'vcov' method for 'model' found!