Я использую мышей 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. Сулиман!):
try (for (i in 1:length(dfmice)) {
tryCatch({
listitem[i]=mice::complete(dfmice[[i]])
}, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
})
Это работает, но каким-то образом дает список, где, что должно быть кадром данных, оказывается всего 1 столбец.Очевидно, я передаю код столбцу, а не кадру данных где-то.
Я увидел эту ссылку: R, работающий со списками в списках , и попытался выполнить следующее без успеха:
dfmiceimp <- rapply(dfmice, mice::complete, how = "list" )
Error in (function (data, action = 1L, include = FALSE, mild = FALSE, :
'data' not of class 'mids'
Я был бы очень рад, если бы кто-нибудь показал мне, как написать синтаксис для этого.