Работа со списками в списке, сохранение результата в глобальной среде - PullRequest
0 голосов
/ 09 декабря 2018

Я использую мышей 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'

Я был бы очень рад, если бы кто-нибудь показал мне, как написать синтаксис для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...