首页 > 解决方案 > 使用循环来用鼠标估算数据帧,使用列表中的预测矩阵

问题描述

我有一个包含许多数据框的全球环境,这些数据框应该用 mouse 估算library(mice)。为了首先计算预测矩阵,我做了以下(在其他人的帮助下):

library(mice)
PredMatr= list()
Myls<-ls(sorted=F)[eapply(.GlobalEnv, class)=="data.frame"]
try (for (i in 1:length(Myls))  {
    PredMatr[[i]]=quickpred(get(Myls[i]), mincor=.1)
})

这将创建一个包含所有预测矩阵的非常好的列表。然而,下一步甚至更复杂一些。我想做类似的事情来进行插补。我想像以前一样循环遍历数据框。但是现在我希望该操作是一个插补,指的是上一个列表中的预测矩阵。我试过了:

dfimpls= list()
try (for (i in 1:length(Myls))  {
    dfimpls[[i]]=mice(get(Myls[i]), m=5, maxit = 5, method='cart',predictorMatrix=PredMatr[i])
})

但是语法不正确,给我以下错误:

Error : predictorMatrix not a matrix

和:

dfimpls= list()
try (for (i in 1:length(Myls))  {
    dfimpls[[i]]=mice(get(Myls[i]), m=5, maxit = 5, method='cart',predictorMatrix=as.matrix(PredMatr[i]))
})

我得到:

Error : Missing row/column names in predictorMatrix

标签: rfor-loopapplyr-mice

解决方案


推荐阅读