Сумма двух списков со списками в 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, есть ли способ сделать это для списков со списками?
Ответы
Ответ 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)