Преобразование не включенных в список матриц в списке обратно в матрицы

#r #lapply

Вопрос:

У меня есть два списка матриц, и каждый список состоит из десяти матриц 5х5:

 List 1:
          [[1]]   
                A           B           C           D           E      
          [1,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000
          [2,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [3,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [4,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [5,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000  
          
          .....
    
          [[10]]   
                 A           B           C           D           E      
          [1,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000
          [2,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [3,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [4,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [5,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000  

List 2:
          [[1]]   
                A           B           C           D           E      
          [1,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000
          [2,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [3,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [4,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [5,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000   
          
          .....
    
          [[10]]   
                 A           B           C           D           E      
          [1,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000
          [2,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [3,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [4,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [5,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
 

Я суммировал два списка с помощью lapply (см. Ниже) и получил желаемый суммарный результат. Однако их больше нет в матрицах в моем новом списке.. Как мне преобразовать их обратно, чтобы я мог экспортировать их в CSV в виде матриц?

используемый код лапли:

 lapply(seq_along(List1),function(i)
         unlist(List1[i]) unlist(List2[i])) 

Result:
[[1]]
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 E1 E2 E3 E4 
 3  3  3  3  4  4  4  4  3  3  3  3  4  4  4  4  3  3  3  3
...

[[10]]
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 E1 E2 E3 E4 
 8  8  8  8  4  4  4  4  6  6  6  6  3  3  3  3  2  2  2  2
 

Ответ №1:

Используйте двойную скобку, чтобы фактически добавлять матрицы (вместо списка из 1 матрицы, который затем преобразуется в вектор с помощью unlist):

 lapply(seq_along(List1), function(i) List1[[i]]   List2[[i]]) 
 

Ответ №2:

Другой вариант — использовать MAP для суммирования матиксов двух списков.

 Map(` `, List1, List2)
 

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

1. Я тоже пробовал этот вариант, и он работает!

Ответ №3:

С помощью map2

 library(purrr)
map2(List1, List2, ` `)