gpt4 book ai didi

r - 所有可能的组合(顺序)

转载 作者:行者123 更新时间:2023-12-02 18:28:45 27 4
gpt4 key购买 nike

我想知道解决以下问题的有效方法是什么:

假设我在组 1 中有三个字符,在组 2 中有两个字符:

group_1 = c("X", "Y", "Z")
group_2 = c("A", "B")

显然,group_1 和 group_2 的“所有”可能组合由下式给出:

group_1_combs = data.frame(X = c(0,1,0,0,1,1,0,1),
Y = c(0,0,1,0,1,0,1,1),
Z = c(0,0,0,1,0,1,1,1))
group_2_combs = data.frame(A = c(0,1,0,1),
B = c(0,0,1,1))

我的问题如下:

(1) 如何有效地从 group_1group_1_combs(假设字符向量可能很大)。

(2) 如何对 group_1_combsgroup_2_combs 的每一行进行“所有可能”组合?具体来说,我想要一个“最终”data.frame,其中 group_1_combs 的每一行都与 group_2_combs 的每一行“排列”。这意味着最终的 data.frame 将具有 8 x 4 行(因为 group_1_combs 中有 8 行,group_2_combs 中有 4 行)和 5 列(X ,Y,Z,A,B)

谢谢!

最佳答案

您想要expand.gridmerge:

问题1:

group_1_combs <- expand.grid(setNames(rep(list(c(0, 1)), length(group_1)), group_1))
group_2_combs <- expand.grid(setNames(rep(list(c(0, 1)), length(group_2)), group_2))

问题2:

> merge(group_1_combs, group_2_combs)
X Y Z A B
1 0 0 0 0 0
2 1 0 0 0 0
3 0 1 0 0 0
4 1 1 0 0 0
5 0 0 1 0 0
6 1 0 1 0 0
7 0 1 1 0 0
...

或者您可以直接转到合并的data.frame:

group_12 <- c(group_1, group_2)
expand.grid(setNames(rep(list(c(0, 1)), length(group_12)), group_12))

关于r - 所有可能的组合(顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69728353/

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