lig*_*ail 6 combinations r list
清单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
Run Code Online (Sandbox Code Playgroud)
我的目标是计算每个对象中所有2元素组合的所有产品.例如,第一个对象a
是3 4 5 6
,所以第一个对象的12 15 18 20 24 30
所有产品都是,第二个对象的所有产品都是42 48 56
.但是当对象中只有一个元素时,输出应该是0
.我计划通过使用来解决问题Map(function(x) combn(x,2,prod),a)
,但是当对象中只有一个元素(例如第4个对象a
)时它不适合.
> 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
Run Code Online (Sandbox Code Playgroud)
那么如何在每个对象中获得所有组合的所有2元素产品,并0
在同时只有一个元素的情况下获得?谢谢!
我的预期结果如下:
[[1]]
[1] 12 15 18 20 24 30
[[2]]
[1] 42 48 56
[[3]]
[1] 12
[[4]]
[1] 0
Run Code Online (Sandbox Code Playgroud)
使用您的方法并包装combn
:
a<-list(3:6,6:8,3:4,8)
combn2 <- function(x, ...)
if(length(x) == 1L) 0 else combn(x, ...)
Map(function(x) combn2(x,2,prod),a)
#[[1]]
#[1] 12 15 18 20 24 30
#
#[[2]]
#[1] 42 48 56
#
#[[3]]
#[1] 12
#
#[[4]]
#[1] 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
135 次 |
最近记录: |