【发布时间】:2018-12-21 14:03:42
【问题描述】:
我有类似的列表
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
我想将 a[[1] 中的 (-2, 1) 中的每一个与 b[[1]] 中的 7 相乘得到 (-14, 7),(4, 5) 中的每一个与 8 相乘,(2, 3 中的每一个) ) 与 9,然后 (0, 2) 中的每个与 5,最后 (-1, 1) 中的每个与 -1。
我可以确定length(a[[i]])==length(b[[i]]) 是TRUE for i=1,2(实际上,i 更大),因此对于所需的乘法有正确数量的条目。
但是,目前尚不清楚a[[i]]) 有多少条目(在示例中,a[[1]] 有 3 个条目,a[[2]] 有 2 个条目,或者等效地,b[[i]] 有多少个条目),除了它们'将至少有一个条目。因此,将a 和b 转换为矩阵似乎并不实用。
我不确定这与问题是否相关,但我们在每个 a[[i]]) 中的条目(即 2)与 a[[i]])s 中的条目一样多。
我在想do.call 和mapply 的某种组合,但无法实现。
【问题讨论】: