r - R中列表元素的排列
问题描述
我正在尝试获取部分列表元素的排列。我可以得到常规排列
my_list <- list('A' = c("A"), 'B'= c('B', 'B'), "C" = c('C', "C", "C"))
combinat::permn(my_list)
但是,我只需要可能的 3 个元素中的 2 个,例如combinat::permn(my_list)[[1]][1:2]
将是期望的结果之一
combinat::permn(my_list)[[1]][1:2]
$A
[1] "A"
$B
[1] "B" "B"
combinat::permn
不允许这些“部分”排列。什么是获得部分排列的好方法?
解决方案
您将需要使用能够一次生成长度为 n 的排列的软件包之一(有关更多信息,请参阅如何在 R 中生成对象的排列或组合?)。然后,您可以遍历这些行并对原始列表进行子集化:
library(gtools)
apply(permutations(length(my_list), 2), 1, function(x) {
my_list[x]
})
[[1]]
[[1]]$A
[1] "A"
[[1]]$B
[1] "B" "B"
[[2]]
[[2]]$A
[1] "A"
[[2]]$C
[1] "C" "C" "C"
[[3]]
[[3]]$B
[1] "B" "B"
[[3]]$A
[1] "A"
[[4]]
[[4]]$B
[1] "B" "B"
[[4]]$C
[1] "C" "C" "C"
[[5]]
[[5]]$C
[1] "C" "C" "C"
[[5]]$A
[1] "A"
[[6]]
[[6]]$C
[1] "C" "C" "C"
[[6]]$B
[1] "B" "B"
推荐阅读
- c# - 如何在c#中使用硒访问li元素的子节点的文本列表
- c# - 如何在不同的方法中调用 SoundPlayer 类型变量
- c# - 如何根据一个属性用一个文本文件填充两个列表?
- python - 安全地将浮点数向下转换为可能的最小整数类型
- xml - 通过 VBA 将多个 XML 记录导入 MS Access 时出现问题
- php - 如何在 PHP 中验证 SOAP 响应中的值?
- json - 从 SQL Server 查询 Web 服务 JSON
- laravel - 无法从 Vuex 中的 API(客户端阻止的资源)获取数据
- java - 如何在 rest 服务中提高文件 IO 性能
- python - 如何在检查 if 条件 else 语句也被执行后修复“在 bash 中”?