gpt4 book ai didi

r - 洗牌向量 - 样本()的所有可能结果?

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

我有一个包含五个项目的向量。

my_vec <- c("a","b","a","c","d")

如果我想将这些值重新排列成一个新的向量(随机播放),我可以使用sample():

shuffled_vec <- sample(my_vec)

简单 - 但sample()函数只给我一种可能的洗牌。 如果我想知道所有可能的洗牌组合怎么办?各种“combn”函数似乎没有帮助,而expand.grid()给了我所有可能的组合< em>有更换,当我需要时没有更换。最有效的方法是什么?

请注意,在我的向量中,我有两次值“a” - 因此,在返回的打乱向量集中,它们都应该有两次“a”。

最佳答案

我认为组合包中的permn可以满足您的需求

library(combinat)
permn(my_vec)

一个较小的例子

> x
[1] "a" "a" "b"
> permn(x)
[[1]]
[1] "a" "a" "b"

[[2]]
[1] "a" "b" "a"

[[3]]
[1] "b" "a" "a"

[[4]]
[1] "b" "a" "a"

[[5]]
[1] "a" "b" "a"

[[6]]
[1] "a" "a" "b"

如果重复项是一个问题,您可以执行类似的操作来消除重复项

strsplit(unique(sapply(permn(my_vec), paste, collapse = ",")), ",")

或者可能是删除重复项的更好方法......

dat <- do.call(rbind, permn(my_vec))
dat[duplicated(dat),]

关于r - 洗牌向量 - 样本()的所有可能结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342323/

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