gpt4 book ai didi

r - 确定所有组合但使用分组变量

转载 作者:行者123 更新时间:2023-12-05 02:28:56 25 4
gpt4 key购买 nike

我有以下数据列表。

Input <- list(c("1", "2"), c("3", "4"), c("5", "6", "7"))

我想从每个列表元素中取出一个项目并将它们组合成一个向量。然后,从每个列表元素中的剩余项目中,我想重复这个过程,从每个列表元素中取出另一个项目并将它们组合到另一个向量中。我想重复这些步骤,直到达到某个预定值(在本例中为 2;2 是最大数字,因为它恰好是 Input 列表中每个列表元素的最小长度).

有很多可能的方法可以做到这一点,我希望找到一种可以返回所有可能性的方法,如下面的 Output 列表。我真的不关心输出的形式,只要它包含相同的信息即可。

Output <- lapply(list(rbind(as.character(c(1, 3, 5)), as.character(c(2, 4, 6))), rbind(as.character(c(1, 3, 5)), as.character(c(2, 4, 7))), rbind(as.character(c(1, 3, 6)), as.character(c(2, 4, 5))), rbind(as.character(c(1, 3, 6)), as.character(c(2, 4, 7))), rbind(as.character(c(1, 3, 7)), as.character(c(2, 4, 5))), rbind(as.character(c(1, 3, 7)), as.character(c(2, 4, 6))), rbind(as.character(c(1, 4, 5)), as.character(c(2, 3, 6))), rbind(as.character(c(1, 4, 5)), as.character(c(2, 3, 7))), rbind(as.character(c(1, 4, 6)), as.character(c(2, 3, 5))), rbind(as.character(c(1, 4, 6)), as.character(c(2, 3, 7))), rbind(as.character(c(1, 4, 7)), as.character(c(2, 3, 5))), rbind(as.character(c(1, 4, 7)), as.character(c(2, 3, 6)))), function (x) {
lapply(as.data.frame(t(x)), function (y) {
y
})
})

这个例子非常小。实际上,我可能会有更多组(Input 列表中的列表元素)和每个组中的更多元素,并且组的大小可能与我的示例中的不同。是否有一种有效的、程序化的方式来执行此操作?我很想看到使用 base 函数的解决方案,但我对任何事情都持开放态度。 expand.grid() 函数不起作用,因为它没有考虑我的分组变量。

最佳答案

你可以试试

lst <- expand.grid(Input)
minlen <- min(lengths(Input))
res <- Filter(
length,
combn(
1:nrow(lst),
minlen,
function(x) {
if (all(!apply(lst[x, ], 2, anyDuplicated))) {
lst[x, ]
}
},
simplify = FALSE
)
)

给出

> res
[[1]]
Var1 Var2 Var3
1 1 3 5
8 2 4 6

[[2]]
Var1 Var2 Var3
1 1 3 5
12 2 4 7

[[3]]
Var1 Var2 Var3
2 2 3 5
7 1 4 6

[[4]]
Var1 Var2 Var3
2 2 3 5
11 1 4 7

[[5]]
Var1 Var2 Var3
3 1 4 5
6 2 3 6

[[6]]
Var1 Var2 Var3
3 1 4 5
10 2 3 7

[[7]]
Var1 Var2 Var3
4 2 4 5
5 1 3 6

[[8]]
Var1 Var2 Var3
4 2 4 5
9 1 3 7

[[9]]
Var1 Var2 Var3
5 1 3 6
12 2 4 7

[[10]]
Var1 Var2 Var3
6 2 3 6
11 1 4 7

[[11]]
Var1 Var2 Var3
7 1 4 6
10 2 3 7

[[12]]
Var1 Var2 Var3
8 2 4 6
9 1 3 7

关于r - 确定所有组合但使用分组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72438813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com