条件的长度> 1,只使用第一个元素(RE:miceadds,MIDS)

时间:2016-05-23 18:47:33

标签: r

我正在使用hot.deck软件包在R中进行热甲板插补,并按照此处描述的示例进行测试:https://cran.r-project.org/web/packages/hot.deck/vignettes/Using_Hot_Deck_Data.pdf

数据集是数据(isq99)。我将跳过创建的其他变量,并讨论热门结果。这是完全我做过的事情:

library(hot.deck)
data(isq99)
out <- hot.deck(isq99, sdCutoff=3, IDvars=c("IDORIGIN","YEAR"))

我坚持在p上使用mids技术组合结果。 3(2.3“使用中频” - 我知道它说的是$ imputations但是如果你转换为amelia那就是:)

library(miceadds)
out.mids <- datalist2mids(out$data)

当我这样做时,我收到以下错误消息:

Warning message:
In if (class(dat.list) %in% "imputationList") { :
  the condition has length > 1 and only the first element will be used

如果我查看原始热门结果的结构,会发生什么:

            Length   Class  Mode   
data               5 mi     list   
affinity    14775370 -none- numeric
donors          4661 -none- list   
draws           4661 -none- list   
max.emp.aff     4661 -none- numeric
max.the.aff     4661 -none- numeric

我不知道为什么它拒绝输出$ data(正如预期的那样有多个插补数据的5个版本) - 我是否应该先知道如何将长度减少为单个集合?

感谢任何帮助。道歉:格式化或者如果我忘记了什么 - 请告诉我你还需要什么。

感谢

2 个答案:

答案 0 :(得分:1)

这看起来像 miceadds 包/函数作者的一个错误,而不是预期一个对象可以有多个类(或者只是向后写%in%个调用)而不是事先检查dat.list参数中给出的对象。无论哪种方式,%in%都不是检查课程的正确方法。 CRAN来源是datalist2mids.R。我会使用maintainer("miceadds")中的电子邮件地址提交错误报告。

答案 1 :(得分:1)

Per @ Richard的建议,我写信给了老鼠的维护者,他尽快回复,我非常感谢。

原来这只是一个警告,而不是一个bug,并且mids对象确实已经生成了。这对我来说是一个彻头彻尾的禁区疏忽。 mouseadds作者确实注意到他可能会在未来版本的软件包中更改/删除警告。