Я бы рекомендовал использовать пакет purrr ( шпаргалка ). Он содержит много полезных функций для работы со списками.
Если вы хотите извлечь каждый пятый элемент каждого подсписка, просто используйте
map(list_name, 5)
Давайте возьмем ваши данные и применим их:
test_ls <- list(structure(list(publisherId = 111, categoryId = 42281, levelId = 462,
subcategoryIdList = list(42284), exerciseIdList = list(c(495048,
495047, 495043, 495044, 495045, 495046, 495049, 495050)),
knowledgeBaseEntryIdList = list(list())), class = "data.frame", row.names = 1L),
structure(list(publisherId = 111, categoryId = 41394, levelId = 459,
subcategoryIdList = list(41395), exerciseIdList = list(
c(473272, 473270, 473269, 473262, 473261, 465453,
465452)), knowledgeBaseEntryIdList = list(list())), class = "data.frame", row.names = 1L))
map(test_ls, 5)
[[1]]
[[1]][[1]]
[1] 495048 495047 495043 495044 495045 495046 495049 495050
[[2]]
[[2]][[1]]
[1] 473272 473270 473269 473262 473261 465453 465452
Если этоявляется именованным списком, как в вашем случае, вы также можете подмножество по имени:
map(test_ls, "exerciseIdList")
Если вы хотите удалить один уровень иерархии из новых подсписков, используйте:
map(test_ls, 5) %>% flatten
[[1]]
[1] 495048 495047 495043 495044 495045 495046 495049 495050
[[2]]
[1] 473272 473270 473269 473262 473261 465453 465452