if 中的错误 (length(scores.temp) == 1 && scores.temp == 0) { : 需要 TRUE/FALSE 的缺失值

  • 本文关键字:temp scores TRUE FALSE 需要 错误 length if r
  • 更新时间 :
  • 英文 :


我正在尝试截断数据集以比较不同的插补方法,但是出现此错误:

if 中的错误 (length(scores.temp( ==

1 && scores.temp == 0( { : 需要真/假的地方缺少值

这里有一个可重现的例子:

library(mice)
A <- matrix(c(rep(4,100),rep(5,100),rep(3,100),rep(7,100),rep(8,100),rep(9,100),rep(2,100)), nrow = 20, byrow = F)
A_miss <- ampute(A)

这实际上是ampute标准化截肢数据分数的方式的问题。如果您查看ampute函数的源代码,您会发现有一个嵌入式函数用于对每个缺失模式的分数求和。如果amputestd的参数是TRUE,这个嵌入式分数求和函数试图使分数居中和缩放(即取标准差(。当分数矩阵中只有一行时,会发生此错误,因为如果您尝试获取一行矩阵中每一列的标准差,则只会得到 NaN。幸运的是,有一个简单的解决方法,只需将std设置为FALSE.这不应该影响截肢数据的结构,因为缩放只是用于诱导缺失的权重的仿射变换。

library(mice)
#> Loading required package: lattice
#> 
#> Attaching package: 'mice'
#> The following objects are masked from 'package:base':
#> 
#>     cbind, rbind
A <- matrix(c(rep(4,100),rep(5,100),rep(3,100),rep(7,100),rep(8,100),rep(9,100),rep(2,100)), nrow = 20, byrow = F)
A_miss <- ampute(A, std = FALSE)

创建于 2020-04-14 由 reprex 软件包 (v0.3.0(

最新更新