gpt4 book ai didi

r - R 中的特定排序

转载 作者:行者123 更新时间:2023-12-01 08:00:38 25 4
gpt4 key购买 nike

我正在为特定输入进行所有可能的组合,但它也必须根据输入的顺序进行排序。由于组合的大小不同,我正在为之前发布的答案而苦苦挣扎。

我想知道这是否可能。

输入:

D N A 3

这意味着我需要在最多 3 个字符串的所有组合中输出它:

D
DD
DDD
DDN
DDA
DND
DNA
.
.

如果我们考虑 D<N<A,这基本上是升序

到目前为止,我的输出如下所示:

A
AA
AAA
AAD
AAN
AD
ADA
ADD
ADN
AN
.
.

我尝试将输入转换为因子 c("D","N","A")并对我的输出进行排序,但随后它会消失任何大于 1 个字符的字符串。

最佳答案

这是一种可能的解决方案:

generateCombs <- function(x, n){
if (n == 1) return(x[1]) # Base case
# Create a grid with all possible permutations of 0:n. 0 == "", and 1:n correspond to elements of x
permutations = expand.grid(replicate(n, 0:n, simplify = F))
# Order permutations
orderedPermutations = permutations[do.call(order, as.list(permutations)),]
# Map permutations now such that 0 == "", and 1:n correspond to elements of x
mappedPermutations = sapply(orderedPermutations, function(y) c("", x)[y + 1])
# Collapse each row into a single string
collapsedPermutations = apply(mappedPermutations, 1, function(x) paste0(x, collapse = ""))
# Due to the 0's, there will be duplicates. We remove the duplicates in reverse order
collapsedPermutations = rev(unique(rev(collapsedPermutations)))[-1] # -1 removes blank
# Return as data frame
return (as.data.frame(collapsedPermutations))
}

x = c("D", "N", "A")
n = 3
generateCombs(x, n)

输出是:

   collapsedPermutations
1 D
2 DD
3 DDD
4 DDN
5 DDA
6 DN
7 DND
8 DNN
9 DNA
10 DA
11 DAD
...

关于r - R 中的特定排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39687647/

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