我正在尝试运行gls函数,但一直收到以下错误消息:
“对象错误(公式= ~var + FS,data = list(MINBIO15 = c(37L,:model.frame.default不是矩阵)”
我的数据如下所示:
MINBIO15 MAXBIO15 FS
Achyranthes_aspera 37 117 0
Achyropsis_avicularis 28 86 0
Alternanthera_adscendens -999 -999 -999
Alternanthera_brasiliana 33 119 0
Alternanthera_caracasana 35 109 1
Alternanthera_cinerella 105 120 1
...我的脚本是:
>tree<-read.tree ("tree.phy")
>clima<-read.table("mydata.txt",header=TRUE,na.strings=-999)
>clima<-na.omit(clima)
>match.phylo.data(tree, clima)
>var=(clima$MINBIO15)
> result.br <- gls(var ~ FS, clima, correlation=corBrownian(phy=tree),method="REML") 数据和树提示完全匹配,并且我的数据是一个数据帧
也许你能给我一些建议?
发布于 2016-10-04 00:27:11
看起来gls需要在data参数中引用它的所有数据值。您还没有给出一个完全可重现的示例,但显然这并不重要。如果我读入了上面的缩写数据集,请使用na.omit(),定义var,然后
gls(var~FS,clima)我得到了和你一样的错误。如果我在数据框中使用变量的名称(MINBIO15):
gls(MINBIO15~FS,clima)我得到了明显合理的结果。
期待您的下一个问题:如果您想用不同的响应变量运行相同的回归,您可以使用如下内容
varname <- "MINBIO15"
form <- reformulate("FS",response=varname)
gls(form,clima, ...)https://stackoverflow.com/questions/39836006
复制相似问题