У меня есть список объектов. У каждого объекта есть матрица. Я хотел бы выполнить матричное суммирование по всем объектам. В настоящее время я делаю это, комбинируя «Reduce» и «lapply», где lapply берет функцию, которая извлекает матрицу из каждого объекта.
Есть ли более эффективный способ реализовать это?
Пустой пример:
mat_1 = matrix(data = c(rep(0.01,4),rep(0.29,4)), nrow = 4, ncol = 2)
mat_2 = matrix(data = c(rep(0.1,4),rep(0.2,4)), nrow = 4, ncol = 2)
obj_1 = list(name = "obj1", my_mat = mat_1) class(obj_1) = "my_obj"
obj_2 = list(name = "obj2", my_mat = mat_2) class(obj_2) = "my_obj"
list_of_my_objs = list(obj_1,obj_2)
get_mat_from_obj = function(my_obj) {
return(my_obj$my_mat)
}
Reduce('+', lapply(list_of_my_objs,get_mat_from_obj))