【问题标题】:Generate all possible combinations for two elements in R [duplicate]为R中的两个元素生成所有可能的组合[重复]
【发布时间】:2014-10-29 22:43:47
【问题描述】:

我有两个数字 a=1.2 和 b=0.9,并且想找出所有可能的组合,以将 a&b 排列在长度为 10 的向量中。该向量中必须有 5 个 a 元素和 5 个 b 元素。我怎么能用 R 写这个?非常感谢!

 ideal output would be a matrix to all combinations:
 1. (a,b,a,b,a,b,a,b,a,b)
 2. (a,a,a,a,a,b,b,b,b,b)
 .
 .
 . 

【问题讨论】:

    标签: r


    【解决方案1】:

    我猜你可以这样做:

    x <- expand.grid(rep(list(c("a", "b")),10))
    x <- x[rowSums(x == "a") == 5,]
    
    head(x)
    #   Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10
    #32    b    b    b    b    b    a    a    a    a     a
    #48    b    b    b    b    a    b    a    a    a     a
    #56    b    b    b    a    b    b    a    a    a     a
    #60    b    b    a    b    b    b    a    a    a     a
    #62    b    a    b    b    b    b    a    a    a     a
    #63    a    b    b    b    b    b    a    a    a     a
    

    但它可能比使用像组合这样的特殊包效率低。

    【讨论】:

      【解决方案2】:

      你会想要使用组合包。

      例如:

      > library(combinat)
      > try1 = ("a", "a", "b")
      > permn(try1)
      [[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"
      

      然后您可以将其处理成一个矩阵。您的向量将只包含 5 个 a 和 5 个 b。

      【讨论】:

      • 感谢您的快速回复,但有什么方法可以在不安装新软件包的情况下做到这一点?
      • 除非您解释为什么安装软件包会产生问题(以及为什么您没有提出有用的答案),否则我们大多数人会假设您只是希望我们为课程做作业(并且你不遵守 SO 的约定。)
      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 2023-03-12
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多