Подтвердить что ты не робот

Сумма двух списков со списками в R

Есть ли простой способ сделать простой расчет в списке списков?

x <- list(a=list(1:4),b=list(1:6))
y <- list(a=list(1:4),b=list(1:6))

Когда я пытаюсь:

x+y

Я получаю сообщение об ошибке: Ошибка в x + y: нечисловой аргумент для двоичного оператора

X и y равны длины и содержат только целые числа. С матрицей можно сделать y + x, есть ли способ сделать это для списков со списками?

4b9b3361

Ответ 1

Вы можете использовать lapply для прохождения через каждые 2 списка одновременно.

 lapply(seq_along(x),function(i)
         unlist(x[i])+unlist(y[i]))

[[1]]
a1 a2 a3 a4 
 2  4  6  8 

[[2]]
b1 b2 b3 b4 b5 b6 
 2  4  6  8 10 12 

Если x и y не имеют одинаковой длины, вы можете сделать это:

 lapply(seq_len(min(length(x),length(y)),function(i)
         unlist(x[i])+unlist(y[i]))

Ответ 2

при условии, что каждый список имеет одинаковую структуру, вы можете использовать mapply следующим образом

  mapply(function(x1, y1) x1[[1]]+y1[[1]], x, y)