Den*_*osa 5 combinations r vector unique
我有一个包含某些单词的向量
colors<-c("Yellow","Blue","Red")
> colors
[1] "Yellow" "Blue" "Red"
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个新变量colorsCombined,其中存在原始向量以及这些单词的所有可能组合.
> colorsCombined
[1] "Yellow", "Blue", "Red", "YellowBlue", "YellowRed", "BlueRed", "YellowBlueRed"
Run Code Online (Sandbox Code Playgroud)
我认为YellowBlue与BlueYellow相同.
我该怎么做呢?
一种选择是combn
在lapply
循环中运行该函数.您可以将其定义为您自己的功能
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"
Run Code Online (Sandbox Code Playgroud)
说明(根据要求)
基本上,OP需要所有可能组合(不是排列)的向量,具体取决于输入向量的长度.因此,我们应该运行该combn
函数k <- 1:length(x)
并为每个组件生成所有组合k
.所以,当k == 1
它只是原始向量时,我们可以跳过那个部分并使用连接原始向量c
.其余生成的组合返回具有不同长度的向量列表(由于显而易见的原因以降序排列),因此我们需要recursive = TRUE
在c
函数内使用以模仿行为unlist
并将结果组合到单个向量中.