【问题标题】:R all permutations per vector entryR 每个向量条目的所有排列
【发布时间】:2020-09-14 17:00:18
【问题描述】:

我有一个向量

x <- c("a b c", "d e")

拆分条目

str_split(x, " ")

我想得到每个分割向量条目的所有排列,所以结果应该是

c("a b c", "b c a", "c a b", "a c b", "b a c", "c b a", "d e", "e d")

我尝试使用函数

permutations(n, r, v=1:n, set=TRUE, repeats.allowed=FALSE)

【问题讨论】:

标签: r


【解决方案1】:

str_split 步骤之后,您可以使用combinat::permn 创建字符串的所有可能排列并将它们粘贴在一起。

result <- unlist(sapply(strsplit(x, " "), function(x) 
                 combinat::permn(x, paste0, collapse = " ")))
result
#[1] "a b c" "a c b" "c a b" "c b a" "b c a" "b a c" "d e"   "e d"  

【讨论】:

    【解决方案2】:

    您可以尝试pracma::perms,如下所示

    unlist(
      Map(
        function(v) do.call(paste, as.data.frame(pracma::perms(v))),
        strsplit(x, " ")
      )
    )
    

    给了

    [1] "c b a" "c a b" "b c a" "b a c" "a b c" "a c b" "e d"   "d e"
    

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2020-08-20
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多