我正在使用鼠标 library(mice) 来估算大量的数据库 . 我编写了一个代码,用于对我的全局环境中的所有数据帧进行估算 . 这个练习的结果是一个名为 dfmice 的大型列表 .

对于列表中的每个列表,我想使用鼠标的 complete 操作手动我可以通过执行以下操作来执行此操作:

list1 <- list(a = 2, b = 3)
list2 <- list(c = "a", d = "b")
dfmice <- list(list1, list2)

library(mice)
listitem1 <- dfmice[[1]]
listitem1 <- mice::complete(listitem1)
listitem2 <- dfmice[[2]]
listitem2 <- mice::complete(listitem2)
etc.

但是我需要为大约450个数据帧执行此操作 .

如何编写为列表中的每个项目自动执行此操作的循环?我想的是(感谢@A.Suliman!):

try (for (i in 1:length(dfmice))  {
  tryCatch({
    listitem[i]=mice::complete(dfmice[[i]])
  }, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
})

这是有效的,但不知何故给出了一个列表,其中应该是一个数据帧,结果只有1列 . 显然我正在将代码添加到列而不是某个数据框 .

我看到了这个链接:R operating on lists within lists并尝试了以下但没有成功:

dfmiceimp <- rapply(dfmice, mice::complete, how = "list" )

Error in (function (data, action = 1L, include = FALSE, mild = FALSE,  : 
  'data' not of class 'mids'

当有人能告诉我如何为此编写语法时,我会很高兴 .