【问题标题】:How to randomly pick a number of combinations from all the combinations efficiently?如何有效地从所有组合中随机选择多个组合?
【发布时间】:2014-11-25 11:27:01
【问题描述】:

我知道函数combn 可以生成所有可能的组合。但是,如果成员总数很大,这确实很耗时,也很耗内存。

我的目标是从所有可能的组合中随机选择组合。例如,我想要 3000 个成员池中的 5000 个不同的三组成员。我想我不需要生成所有可能的组合并从中选择 5000 个。但似乎 R 没有现成的功能来执行此操作。那么如何处理这个问题呢?

【问题讨论】:

    标签: r combinations


    【解决方案1】:

    这并不完全是您所需要的,但也许它可以帮助您入门:

     library(data.table) #to make the table easier
     members=1:3000;
     X=data.table(RUN=1:5000)
     X<-X[,as.list(sample(members, 3)),by=RUN]
    

    这将创建 3 个从成员向量中随机选择的新列。将它们视为每个成员的 ID。

    我会检查一下有多少是唯一的:

     X[duplicated(X, by=c('V1','V2','V3'))]
    

    这对你有帮助吗?

    【讨论】:

    • 这很有帮助。但似乎我需要一个 while 循环来确保所有集合都是唯一的。
    • 使用最后一个条目 (X[duplicated(X, by=c('V1','V2','V3'))]) 可以检查是否有重复项并将其删除。无论如何,运行 10,000 并获得 5000 的随机样本。除非你非常非常倒霉:)
    猜你喜欢
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2020-10-27
    • 2010-09-08
    • 2023-03-11
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多