tryCatch во вложенных циклах for - PullRequest
       11

tryCatch во вложенных циклах for

0 голосов
/ 10 октября 2019

Предположим, у меня есть структура списка с mids объектами, которая выглядит следующим образом:

library(data.table)  
library(mice)
df <- fread(
    "A   B  C  D  E  F  iso   year   
     0   A   NA  1  NA  NA  NLD   2009   
     1   Y   NA  2  NA  NA  NLD   2009   
     0   Q   NA  3  NA  NA  AUS   2011   
     1   NA  NA  4  NA  NA  AUS   2011   
     0   0   NA  7  NA  NA  NLD   2008   
     1   1   NA  1  NA  NA  NLD   2008   
     0   1   NA  3  NA  NA  AUS   2012   
     0   NA  1   NA  1  NA  ECU   2009   
     1   NA  0   NA  2  0   ECU   2009   
     0   NA  0   NA  3  0   BRA   2011   
     1   NA  0   NA  4  0   BRA   2011   
     0   NA  1   NA  7  NA  ECU   2008   
     1   NA  0   NA  1  0   ECU   2008   
     0   NA  0   NA  3  2   BRA   2012   
     1   NA  0   NA  4  NA  BRA   2012",
    header = TRUE
)

a <- mice(df, m=1, maxit = 1, seed=1, method='cart')
b <- mice(df, m=1, maxit = 1, seed=2, method='cart')

# Creates a list
df_iso <- split(df, df$iso) # Creates a list of dataframes

# Creates a list of lists
mylist.names <- names(df_iso)
df_iso_list <- vector("list", length(mylist.names))
names(df_iso_list) <- mylist.names

f <- function(x) return(list(a = a, b = b))
new_nested <- lapply(df_iso, f)

Теперь я хочу связать элементы этих списков, как описано здесь: LINK

Что должно привести к чему-то вроде:

for (n in 1:length(df)) {
    imp_pars[[1]] <- new_nested[[n]]$a
    imp_pars[[2]] <- new_nested[[n]]$b
    imp_merged <- imp_pars[[1]]
    for (n in 2:length(imp_pars)){
      imp_merged[[n]] <- 
        ibind(imp_merged,
              imp_pars[[n]])
}}

Однако что-то не так, потому что я получаю сообщение об ошибке:

Error in ibind(imp_merged, imp_pars[[n]]) : 
  Differences detected in the missing data pattern

Я пытался поставить несколько tryCatch в, но я испортил синтаксис. Кто-нибудь может мне помочь?

tryCatch (for (n in 1:length(df)) {
  tryCatch({
    imp_pars[[1]] <- new_nested[[n]]$a
    imp_pars[[2]] <- new_nested[[n]]$b
    imp_merged <- imp_pars[[1]]
    tryCatch({for (n in 2:length(imp_pars)){
      imp_merged[[n]] <- 
        ibind(imp_merged,
              imp_pars[[n]])
              }, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
  }, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
}})
...