给定一个包含两个列表的列表,我试图在不使用 for 循环的情况下获取第一个列表与第二个列表的所有元素乘积的列表。例如:
> a <- list(c(1,2), c(2,3), c(4,5))
> b <- list(c(1,3), c(3,4), c(6,2))
> c <- list(a, b)
该函数应返回一个包含 9 个条目的列表,每个条目的大小为 2。例如,
> answer
[[1]]
[1] 1 6
[[2]]
[1] 3 8
[[3]]
[1] 6 4
[[4]]
[1] 2 9
[[5]]
[1] 6 12
etc...
我们欢迎所有的建议!
最佳答案
一种快速(但内存密集型)的方法是将 mapply 机制与参数回收结合使用,如下所示:
mapply(`*`,a,rep(b,each=length(a)))
给出:
> mapply(`*`,a,rep(b,each=length(a)))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 2 4 3 6 12 6 12 24
[2,] 6 9 15 8 12 20 4 6 10
或更换
a
与 c[[1]]
和 b
与 c[[2]]
获得相同。要获取列表,请设置参数 SIMPLIFY = FALSE
.
关于r - 乘以 R 中列表的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552387/