我正在尝试运行gls函数,但我不断收到此错误消息:
“model.frame.default中的错误(公式= ~var + FS,data = list(MINBIO15 = c(37L ,: 对象不是矩阵“
我的数据如下:
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")
数据和树提示完美匹配,我的数据是数据框
也许你可以就此提出一些建议?
答案 0 :(得分:0)
看起来gls
需要在data
参数中引用其所有数据值。你没有给出一个完全可重复的例子,但显然它并不重要。如果我读入上面的缩写数据集,请使用na.omit()
,定义var
,然后
gls(var~FS,clima)
我得到了同样的错误。如果我在数据框(MINBIO15
)中使用变量的名称,而不是:
gls(MINBIO15~FS,clima)
我得到了明显合理的结果。
预测您的下一个问题:如果您想使用不同的响应变量运行相同的回归,您可以使用类似
的内容varname <- "MINBIO15"
form <- reformulate("FS",response=varname)
gls(form,clima, ...)