У меня есть списки типа
a <- list(list(c(-2,1), 4:5, 2:3), list(c(0,2), c(-1,1)))
b <- list(7:9, c(5,-1))
> a
[[1]]
[[1]][[1]]
[1] -2 1
[[1]][[2]]
[1] 4 5
[[1]][[3]]
[1] 2 3
[[2]]
[[2]][[1]]
[1] 0 2
[[2]][[2]]
[1] -1 1
> b
[[1]]
[1] 7 8 9
[[2]]
[1] 5 -1
Я хочу умножить каждое из (-2, 1) с a[[1]
на 7 из b[[1]]
, чтобы получить (-14, 7), каждый из (4, 5) с 8, каждый из (2, 3) с 9, а затем каждый из (0, 2) с 5 и, наконец, каждый из (-1, 1), с -1.
Iможно быть уверенным, что length(a[[i]])==length(b[[i]])
равно TRUE
для i = 1,2 (на практике я намного больше), так что есть правильное количество записей для желаемых умножений.
Однако не ясно, сколько записей имеет a[[i]])
(в данном примере 3 для a[[1]]
и 2 для a[[2]]
, или, что эквивалентно, какова длина b[[i]]
), за исключениемчто у них будет хотя бы одна запись.Следовательно, преобразование a
и b
в матрицы не представляется практичным.
Я не уверен, что это имеет отношение к проблеме, но также будет иметь место, что у нас будет столько записей в каждом изa[[i]])
(т.е. 2), как у нас a[[i]])
с.
Я думал о некоторой комбинации do.call
и mapply
, но не смог заставить ее работать.