使用nlme运行gls时出错

时间:2016-10-03 16:15:39

标签: r nlme

我正在尝试运行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") 

数据和树提示完美匹配,我的数据是数据框

也许你可以就此提出一些建议?

1 个答案:

答案 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, ...)