gpt4 book ai didi

r - 从向量中获取唯一组合的网格

转载 作者:行者123 更新时间:2023-12-05 00:18:01 24 4
gpt4 key购买 nike

我想从一个序列向量中返回一个包含唯一行的网格。我正在寻找一个通用的解决方案,这样我就可以在一个向量中传递任意数量的序列。我不知道这方面的术语,那我该怎么做呢?

示例

num <- 3
v <- c(seq(1, num, 1))

期望的输出

1 2 3
2 3 1
3 1 2

第二列和第三列可以切换:

1 3 2
2 1 3
3 2 1

我尝试操作 expand.grid() 但它需要排序和过滤,这看起来有点过分。

最佳答案

我们可以使用 combinat 包中的 permn 生成 v 的所有可能排列,然后选择顶部 num其中使用 head

head(as.data.frame(do.call(rbind, combinat::permn(v))), num)

# V1 V2 V3
#1 1 2 3
#2 1 3 2
#3 3 1 2

我们还可以使用 sample 选择任何 num 行,而不是使用 head 选择前 num 行。

在哪里

combinat::permn(v) #gives
#[[1]]
#[1] 1 2 3

#[[2]]
#[1] 1 3 2

#[[3]]
#[1] 3 1 2

#[[4]]
#[1] 3 2 1

#[[5]]
#[1] 2 3 1

#[[6]]
#[1] 2 1 3

关于r - 从向量中获取唯一组合的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58758880/

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