r - 乘以 R 中列表的组合

标签 r

给定一个包含两个列表的列表,我试图在不使用 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

或更换 ac[[1]]bc[[2]]获得相同。要获取列表,请设置参数 SIMPLIFY = FALSE .

关于r - 乘以 R 中列表的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552387/

相关文章:

R gputools : gcc: error: unrecognized command line option ‘-Wp’

R如何计算两行之间的 'Percentage of Change'?

r - 使用 facet_wrap 和 ggplot2 在每个方面绘制整个数据

r data.table 在函数调用中的用法

r - 计算变量运行所用的时间

r - 在有序的日期列表中填写缺少的年份

r - Windows 中的 PDF 展平

将 DateVector 元素与 Date 进行比较时发生 Rcpp 错误

r - 在条形图中将基线 y 更改为 1(而不是零)

r - 如何生成 0 - 100 之间的随机整数,但仅限于 10s?