我确定我在这里遗漏了一些明显的东西;我正在尝试使用循环将输入更改为公式,然后生成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!