【发布时间】:2016-12-29 06:38:32
【问题描述】:
列表a如下:
a<-list(3:6,6:8,3:4,8)
> a
[[1]]
[1] 3 4 5 6
[[2]]
[1] 6 7 8
[[3]]
[1] 3 4
[[4]]
[1] 8
我的目标是计算每个对象中所有 2 元素组合的所有乘积。比如a中的第一个对象是3 4 5 6,那么第一个对象的所有乘积都是12 15 18 20 24 30,第二个对象的所有乘积都是42 48 56。但是当对象中只有一个元素时,输出应该是0。本来打算用Map(function(x) combn(x,2,prod),a)来解决这个问题,但是当对象只有一个元素的时候就不合适了(比如a中的第4个对象)。
> Map(function(x) combn(x,2,prod),a)
[[1]]
[1] 12 15 18 20 24 30
[[2]]
[1] 42 48 56
[[3]]
[1] 12
[[4]]
[1] 2 3 4 5 6 7 8 6 8 10 12 14 16 12 15 18 21 24 20 24 28 32 30 35 40 42 48 56
那么当同时只有一个元素时,如何获得每个对象中所有组合的所有二元乘积并获得0?谢谢!
我的预期结果如下:
[[1]]
[1] 12 15 18 20 24 30
[[2]]
[1] 42 48 56
[[3]]
[1] 12
[[4]]
[1] 0
【问题讨论】:
标签: r list combinations