相关疑难解决方法(0)

R:具有/不具有替换的排列和组合以及用于不同/非独特项目/多集的排列和组合

在这个主题中,我试图在这里包括所有常见问题及其答案.我希望这对某人有用.

一般问题:如何rn对象生成对象序列?

  • 组合与排列.
  • 有替换和没有替换.
  • 不同的项目与非独特的项目(多重集合).

总共存在这类2^3=8问题.

[更新]

Josh O'Brien认为这8个问题与十二种方式有关.实际上,"不同"的问题以十二种方式包含在内,而"非独特"的问题则不包括在内.无论如何,将这里的8个问题与12倍的方式进行比较是很有趣的.请参阅注释以获取进一步的读数.

combinations r permutation multiset r-faq

21
推荐指数
2
解决办法
1万
查看次数

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

我试图找到一种方法来获得A,A,A,A,B,B,B,B,B的所有可能的唯一排列的R列表.

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

combinations r

5
推荐指数
1
解决办法
813
查看次数

使用R获得总计为100的所有组合

我需要使用8个变量得到总和等于100的所有组合,这些变量可以通过10的递增步长从0到100取任何值.(即0,10,20 ...... 100)

以下脚本就是这样做但效率非常低,因为它创建了一个巨大的数据集,我想知道是否有人有更好的方法来做到这一点.

x <- expand.grid("ON" = seq (0,100,10), 
        "3M" = seq(0,100,10), 
        "6M" = seq(0,100,10), 
        "1Y" = seq(0,100,10), 
        "2Y" = seq(0,100,10),
        "5Y" = seq(0,100,10), 
        "10Y" = seq(0,100,10), 
        "15Y" = seq(0,100,10))

x <- x[rowSums(x)==100,]
Run Code Online (Sandbox Code Playgroud)

编辑 -

回答StéphaneLaurent提出的问题

结果应该是这样的

ON 3M 6M 1Y 2Y 5Y 10Y 15Y        
100 0  0  0  0  0   0   0  
 90 10  0  0  0  0   0   0  
 80 20  0  0  0  0   0   0  
 70 30  0  0  0  0   0   0  
 60 40 …
Run Code Online (Sandbox Code Playgroud)

combinations r

5
推荐指数
2
解决办法
1755
查看次数

如何使用 R 高效生成唯一排列

我有以下生成唯一排列的代码:

library(magrittr)
library(tictoc)

count_unique_perm <- function(l = NULL) {
  lo <- combinat::permn(l)
  do.call(rbind, lapply(lo, paste0, collapse = ""))[, 1] %>%
    unique() %>%
    length()
}
Run Code Online (Sandbox Code Playgroud)

它已经给出了正确的结果。通过此输入:

l1 <- c("R", "R", "R", "R", "R", "R", "R", "E", "K", "P") # 720
l2 <- c("R", "R", "R", "R", "R", "Q", "G", "K", "M", "S") # 30,240
Run Code Online (Sandbox Code Playgroud)

但它运行速度非常慢。

tic()
count_unique_perm(l = l1)
toc()
#118.155 sec elapsed

#107.793 sec elapsed for l2
Run Code Online (Sandbox Code Playgroud)

我怎样才能加快速度?

r permutation combinatorics

0
推荐指数
2
解决办法
156
查看次数

标签 统计

r ×4

combinations ×3

permutation ×2

combinatorics ×1

multiset ×1

r-faq ×1