Как задать часть списка

#r #list

#r #Список

Вопрос:

Я хотел бы получить доступ ко всем элементам в моделях, которые соответствуют AICv. Как мне сделать это с помощью следующего кода, пожалуйста? Я не хочу выписывать models[[1]]$AICv, models[[2]]$AICv , но предпочел бы их все одновременно. Спасибо

 Model_eval_Mixed <- list(AICv=1, Probabilities = matrix(sample(9,9),3,3))
Model_eval_Tan <- list(AICv=2, Probabilities = matrix(sample(9,9),3,3))
Model_eval_Exp <- list(AICv=1.5, Probabilities = matrix(sample(9,9),3,3))
Model_eval_Gau <- list(AICv=2.5, Probabilities = matrix(sample(9,9),3,3))
#models = c(Model_eval_Tan,Model_eval_Mixed,Model_eval_Gau,Model_eval_Exp)
models = list(Model_eval_Tan=Model_eval_Tan,Model_eval_Mixed=Model_eval_Mixed,Model_eval_Exp=Model_eval_Exp,Model_eval_Gau=Model_eval_Gau)
  

Ответ №1:

Вы можете использовать sapply с функцией [[ и именем AICv .

 sapply(models, "[[", "AICv")
#  Model_eval_Tan Model_eval_Mixed   Model_eval_Exp   Model_eval_Gau 
#             2.0              1.0              1.5              2.5 
  

Комментарии:

1. Хороший друг!!

2. Может lapply(models, "[[", "Probabilities") быть?

Ответ №2:

purrr::map семейство функций позволяет это сделать, если вы хотите использовать подход tidyverse:

 library(purrr)
map_dbl(models, "AICv")
#   Model_eval_Tan Model_eval_Mixed   Model_eval_Exp   Model_eval_Gau 
#              2.0              1.0              1.5              2.5