gpt4 book ai didi

r - 向量与顺序的可能组合

转载 作者:行者123 更新时间:2023-12-02 03:23:17 25 4
gpt4 key购买 nike

x <- letters[1:4]
x
# [1] "a" "b" "c" "d"

t(combn(x, 2))
# [,1] [,2]
# [1,] "a" "b"
# [2,] "a" "c"
# [3,] "a" "d"
# [4,] "b" "c"
# [5,] "b" "d"
# [6,] "c" "d"

如果我还有 b-a、c-a...d-c 的逆组合,我应该如何编写代码。总共12种组合。

最佳答案

您可以利用基数 R 中的 expand.grid 来获取向量的所有可能组合(即 16 种组合),然后使用 subset (或 [.data.frame),以便两列中的值在一行中永远不会相等(产生预期的 12 种组合):

x <- letters[1:4]
subset(expand.grid(rep(list(x),2)), Var1 != Var2)
# Var1 Var2
#2 b a
#3 c a
#4 d a
#5 a b
#7 c b
#8 d b
#9 a c
#10 b c
#12 d c
#13 a d
#14 b d
#15 c d

使用 data.table 的交叉连接 (CJ) 函数的替代方案:

libraray(data.table)
CJ(x, x)[V1 != V2]
# V1 V2
# 1: a b
# 2: a c
# 3: a d
# 4: b a
# 5: b c
# 6: b d
# 7: c a
# 8: c b
# 9: c d
#10: d a
#11: d b
#12: d c

关于r - 向量与顺序的可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784097/

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