#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, ` `)