首页 > 解决方案 > 获取要选择的元素动态长度的所有组合

问题描述

我有一个数据框:

dat <- data.frame(toys = c("bear", "car", "plane", "truck", "doll"),
                  price = c(1.23, 2.34, 3.45, 4.56, 5.67))

我现在想要获得一次可以选择 2、3 和 4 个玩具的所有玩具组合。

我可以手动调用该combn函数三次,例如

combn(dat$toys, 2)
combn(dat$toys, 3)
combn(dat$toys, 4)

但是,我正在寻找一个动态解决方案,我可以理想地提供一个范围(例如c(2,4)),因此我可以在一次调用中获得所有上述组合。在我的真实示例中,我将拥有大约 22 个玩具并且想要获得不同范围的组合(例如所有“7 到 14 元素”组合或“8 到 13”等)。

有任何想法吗?

标签: rcombn

解决方案


使用任何

Map(combn, list(dat$toys),2:4)

或者

lapply(2:4,combn,x = dat$toys)

当然你可以添加simplify=FALSE


推荐阅读