Сообщение об ошибке «Ошибка в if (x $ boot) {: аргумент имеет нулевую длину» при попытке получить доступ к выводу функции из списка - PullRequest
0 голосов
/ 23 марта 2020

Мне было интересно, кто-нибудь может дать мне подсказку о том, что я здесь делаю неправильно.

Я создал функцию, которая содержит al oop, в которой я перебираю вектор переменных (мои IV), для которых я хочу проверить, имеют ли они косвенный эффект (через моего посредника) на моей зависимой переменной. Я делаю это с помощью пакета «Посредничество». В thel oop я пытаюсь сохранить результат каждого теста посредничества ("objects_main") и сводку этого объекта ("results_main") как элемент двух отдельных списков.

Это код:

   #create list to store results
   objects_main <- rep(list(NA), times = 36)
   results_main <- rep(list(NA), times = 36)


  #iterate through all IVs and store results in a list (named after effect)
    for(i in 1:length(all_ivs)){
      objects_main[[i]] <- mediation::mediate(model.m = model_m, 
                                              model.y = model_y, 
                                              treat = all_ivs[i], 
                                              mediator = mediator, 
                                              vcov = vcovHC(model.m & model.y, "HC3"))
      results_main[[i]] <- summary(mediation::mediate(model.m = model_m, 
                                              model.y = model_y, 
                                              treat = all_ivs[i], 
                                              mediator = mediator, 
                                              vcov = vcovHC(model.m & model.y, "HC3")))
      names(objects_main[[i]]) <- all_ivs[i]
      names(results_main[[i]]) <- all_ivs[i]
    }


   #output
   output <- 
   list(
     "objects_main" = objects_main,
     "results_main" = results_main)

Проблема, с которой я сталкиваюсь, заключается в том, что хотя список «objects_main» прекрасно хранит все объекты-посредники, я получаю следующую строку ошибки, если пытаюсь получить доступ к сводке результаты (например, функция $ results_main [1]; здесь «функция» - это объект, в котором я сохранил результаты всей функции):

[[1]]

Causal Mediation Analysis 

Error in if (x$boot) { : argument is of length zero

Я также пробовал несколько вариантов второй части l oop, но ничего из этого не сработало:

#Instead of 
results_main[[i]] <- summary(mediation::mediate(model.m = model_m, 
                                              model.y = model_y, 
                                              treat = all_ivs[i], 
                                              mediator = mediator, 
                                              vcov = vcovHC(model.m & model.y, "HC3")))
#I also did
results_main[[i]] <- mediation:::summary.mediate(objects_main[[i]])
results_main[[i]] <- summary(objects_main[[i]])

Кто-нибудь видит, что мне здесь не хватает?

Большое спасибо за вашу помощь!

Редактировать: Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, или я не совсем понимаю, что кажется вам важным! Я был бы рад предоставить все, что вам нужно.

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