mlogit.data() 错误:分配的数据 `ids` 必须与现有数据兼容

Posted

技术标签:

【中文标题】mlogit.data() 错误:分配的数据 `ids` 必须与现有数据兼容【英文标题】:mlogit.data() Error: Assigned data `ids` must be compatible with existing data 【发布时间】:2020-08-15 18:14:36 【问题描述】:

我已经为此工作了几个小时,但我根本找不到任何解决问题的方法。希望这里有人可以提供帮助。

我正在尝试为一些具有以下结构的数据创建个人选择矩阵:

# A tibble: 2,152 x 32
     age choice canton  lr_s dist_svp dist_fdp dist_bdp dist_cvp dist_glp dist_sp
   <dbl> <fct>  <fct>  <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>   <dbl>
 1    39 sp     GE         3       49       25       25        4       16       1
 2    67 sp     ZH         0      100       49       64        4       25       0
 3    42 svp    ZH         7        4        4        1       36        4      36

   dist_gps pid_svp pid_fdp pid_bdp pid_cvp pid_glp pid_sp pid_gps french italian
      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>  <dbl>   <dbl>  <dbl>   <dbl>
 1        0       0       0       0       0       0      0       1      1       0
 2        9       0       0       0       0       0      1       0      0       0
 3       36       0       0       0       0       0      1       0      0       0

现在,我需要创建一个个人选择矩阵,其中包含列中 dist_* / pid_* 指示的 7 个备选方案。

根据我的理解,这应该使用以下代码:

work.pc <- mlogit.data(work,
                       varying = c(5:11, 12:18),
                       choice = "choice",
                       shape = "wide",
                       sep = "_")

但是,当我运行此代码时,我收到以下错误消息和一些警告消息:

Error: Assigned data `ids` must be compatible with existing data.
x Existing data has 15064 rows.
x Assigned data has 2152 rows.
ℹ Only vectors of size 1 are recycled.
Run `rlang::last_error()` to see where the error occurred.
In addition: Warning messages:
1: Setting row names on a tibble is deprecated. 
2: Setting row names on a tibble is deprecated. 
3: Setting row names on a tibble is deprecated. 
4: Setting row names on a tibble is deprecated. 
5: Setting row names on a tibble is deprecated. 
6: Setting row names on a tibble is deprecated. 
7: Setting row names on a tibble is deprecated. 

这里有什么问题?我很感激任何帮助!我什么都试过了。

【问题讨论】:

抱歉,我对 tibbles 不太熟悉。如何将这些数据复制到 r 中? dput 会不会容易很多? 例如dput(work[1:20,]) 【参考方案1】:

问题已解决:必须将 tibble “工作”转换为 dataframe

使用后

work <- as.data.frame(work)

代码正常运行,即消除了错误消息。

【讨论】:

此解决方案的后续措施:这似乎适用于 sf 对象(产生相同的问题),但这并不完全可取,因为它将地理组件删除到 sf。此外,科幻对象应该遵守 tidyverse。有没有人有解决方法来为 sf 对象生成相同的解决方案,但要保留几何形状(即不需要转换为数据框)?

以上是关于mlogit.data() 错误:分配的数据 `ids` 必须与现有数据兼容的主要内容,如果未能解决你的问题,请参考以下文章

克服 C++ 中的错误内存分配

使用malloc获取错误来分配内存

Vue组件,将计算属性分配给数据

为结构“错误”分配内存

链表常用内容和易犯错误

三菱PLC 3300 错误