gpt4 book ai didi

R 问题 A、A、A、A、B、B、B、B、B 的唯一组合数

转载 作者:行者123 更新时间:2023-12-04 11:26:38 26 4
gpt4 key购买 nike

我试图找到一种方法来在 R 中获取 A、A、A、A、B、B、B、B、B 的所有可能的唯一排列的列表。

组合最初被认为是获得解决方案的方法,因此组合的答案。

最佳答案

我认为这就是你所追求的。 @bill 很高兴建议合并 uniquecombn .我们还将使用 apply 系列来生成所有组合。自 unique删除重复行,我们需要转置来自 combn 的结果之前 unique对他们。然后我们在返回屏幕之前将它们转回原位,以便每一列代表一个唯一的答案。

#Daters
x <- c(rep("A", 4), rep("B",5))
#Generates a list with ALL of the combinations
zz <- sapply(seq_along(x), function(y) combn(x,y))
#Filter out all the duplicates
sapply(zz, function(z) t(unique(t(z))))

返回:
[[1]]
[,1] [,2]
[1,] "A" "B"

[[2]]
[,1] [,2] [,3]
[1,] "A" "A" "B"
[2,] "A" "B" "B"

[[3]]
[,1] [,2] [,3] [,4]
[1,] "A" "A" "A" "B"
[2,] "A" "A" "B" "B"
[3,] "A" "B" "B" "B"

...

编辑 由于问题是关于排列而不是组合,因此上面的答案没有那么有用。 This post概述了在给定一组参数的情况下生成唯一排列的函数。我不知道它是否可以改进,但这是使用该功能的一种方法:
fn_perm_list <-
function (n, r, v = 1:n)
{
if (r == 1)
matrix(v, n, 1)
else if (n == 1)
matrix(v, 1, r)
else {
X <- NULL
for (i in 1:n) X <- rbind(X, cbind(v[i], fn_perm_list(n -
1, r - 1, v[-i])))
X
}
}

zz <- fn_perm_list(9, 9)

#Turn into character matrix. This currently does not generalize well, but gets the job done
zz <- ifelse(zz <= 4, "A", "B")

#Returns 126 rows as indicated in comments
unique(zz)

关于R 问题 A、A、A、A、B、B、B、B、B 的唯一组合数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6164620/

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