【问题标题】:Unique string combinations唯一的字符串组合
【发布时间】:2015-04-01 09:42:49
【问题描述】:

我有一个包含某些单词的向量

colors<-c("Yellow","Blue","Red")

> colors
[1] "Yellow" "Blue"   "Red" 

现在我想创建一个新变量 colorsCombined,其中存在原始向量以及这些单词的所有可能组合。

> colorsCombined
[1] "Yellow", "Blue", "Red", "YellowBlue", "YellowRed", "BlueRed", "YellowBlueRed"

我认为 YellowBlue 与 BlueYellow 相同。

我该怎么做?

【问题讨论】:

    标签: r vector unique combinations


    【解决方案1】:

    一种选择是在lapply 循环中运行combn 函数。您可以将其定义为您自己的函数

    allCombs <- function(x) c(x, lapply(seq_along(x)[-1L], 
                                 function(y) combn(x, y, paste0, collapse = "")),
                                 recursive = TRUE)
    
    allCombs(colors)
    ## [1] "Yellow" "Blue" "Red" "YellowBlue" "YellowRed" "BlueRed" "YellowBlueRed"
    

    说明(根据请求)

    基本上,OP 想要一个包含所有可能组合(不是排列)的向量,具体取决于输入向量的长度。因此,我们应该在k &lt;- 1:length(x) 上运行combn 函数并为每个k 生成所有组合。 所以当k == 1 时,它只是原始向量,所以我们可以跳过那部分并使用c 连接原始向量。其余生成的组合返回一个具有不同长度的向量列表(出于显而易见的原因按降序排列),因此我们需要在c 函数中使用recursive = TRUE 以模仿unlist 的行为并组合将结果转换为单个向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多