Предположим, у меня есть два списка, и соответствующие элементы списков имеют одинаковую форму:
e1=list(1,c(1,2,3),matrix(1:12,3,4))
e2=list(1,c(1,2,3),matrix(1:12,3,4))
, и я хочу добавить эти два списка поэлементно.Вот мое решение, которое работает для любой длины списков и любой формы элемента, если они совпадают и могут быть добавлены:
> esum
function(e1,e2){
e = list()
for(i in 1:length(e1)){
e[[i]]=e1[[i]]+e2[[i]]
}
e
}
> esum(e1,e2)
, но это только кажется уродливым, и, вероятно, это можно сделатьв одну строчку.
Это первый этап проблемы, который заключается в том, чтобы сложить целый список многих из этих списков, но как только esum определен, его просто уменьшают:
> ee = list(e1,e2,e1,e1,e2)
> Reduce(esum,ee)[[3]] # lets just check [[3]] for now
[,1] [,2] [,3] [,4]
[1,] 5 20 35 50
[2,] 10 25 40 55
[3,] 15 30 45 60
Итак, любойу них есть однострочник?
Да, я знаю, что однострочник не всегда лучший.