r-if(abs(x-oldx)<ftol){错误:需要TRUE / FALSE的地方缺少值

时间:2018-10-05 22:46:15

标签: r choice mlogit

嗨,我正在尝试使用mlogit函数来估计运输选择的工作旅行模式的离散选择模型。

使用mlogit.data函数后,数据显示如下

mledata <- mlogit.data(data, choice="choice",shape="long", chid.var="ID", alt.var="fmode")

> head(mledata[,c(86,90:96)])
        ID extrabusdistance extratraindistance freq fmode y.n choice extradistance
1.car    1           0.0000            0.00000    3   car yes   TRUE   0.00000
1.bus    1          19.8579            0.00000    3   bus  no  FALSE   19.85790
1.train  1           0.0000           27.32557    3 train  no  FALSE   27.32557
2.car    2           0.0000            0.00000    3   car yes   TRUE   0.00000
2.bus    2          28.1311            0.00000    3   bus  no  FALSE   28.13110
2.train  2           0.0000           39.32078    3 train  no  FALSE   39.32078

我有一些个人的特定特征,稍后再介绍,但是我首先尝试使用此简单模型,并遇到此错误。

> f<-mlogit(choice~extradistance,mledata)
Error in if (abs(x - oldx) < ftol) { : 
missing value where TRUE/FALSE needed

我不确定这是否会有所帮助,但请包括以下内容:

> typeof(mledata$extradistance)
[1] "double"
> typeof(mledata$choice)
[1] "logical"

我的教授几乎使用了我在STATA中显示的确切数据集,并且该数据集可以运行,因此非常感谢R中的任何帮助。在选择列中仅包含“ TRUE”或“ FALSE”,并且每个单独的“ ID”都有一个TRUE和两个false。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题!但是后来我发现,由于我在构建daraset时发生语法错误,在选择列中缺少一些1! 检查一下:

aggregate(df$choice, by=list(choice.id=df$choice.id), FUN=sum)