Предположим, у меня есть структура списка с 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")})
}})