r - 如何在 R 中生成所有可能的 m 组合,m 变化

标签 r combinations

我们如何在 R 中从可变长度的向量生成所有可能的组合(可变长度,以便结果列表的长度可以是 1、2 或 3,如果有 3 个元素):

# say we have a vector of length 3:
vec = letters[1:3]

ret = list('a', 'b', 'c', 'ab', 'ac', 'bc', 'abc', 'a,b', 'a,c', 'a,bc', 'b,c', 'ac,b', 'ab,c', 'a,b,c')

谢谢!

最佳答案

这是一种方法,但它对较长的向量表现不佳。可能有更简洁的方法,但同时这可能就足够了。

get_combos <- function(x) {
  x2 <- unlist(lapply(seq_along(x), function(m) 
    sapply(combn(x, m, simplify=FALSE), paste0, collapse='')))
  x3 <- expand.grid(rep(list(x2), length(x)))
  x4 <- sapply(apply(x3, 1, unique), function(x) paste0(sort(x), collapse=','))
  unique(grep('.*([^,]).*\\1', x4, val=TRUE, invert=TRUE))
}

get_combos(letters[1:3])

##  [1] "a"     "a,b"   "a,c"   "a,bc"  "a,b,c" "b"     "b,c"   "ac,b" 
##  [9] "c"     "ab,c"  "ab"    "ac"    "bc"    "abc"  

关于r - 如何在 R 中生成所有可能的 m 组合,m 变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799696/

相关文章:

algorithm - 随机选择一组不同整数的最有效方法

r - 是否可以在不使用函数的情况下将 R 回归摘要复制/粘贴到 Excel?

r - 多行,每行都基于 ggplot2 中的不同数据帧 - 自动着色和图例

python - 多列的itertools组合

ios - 不同 NSArray 对象的组合

scala - Scala 中的整数分区

r - R中具有不同颜色的直方图样图

html - 在 R 中转换 HTML 字符实体编码

R:通过移动数据行按列扩展数据框

arrays - 包含特定索引 'i' 的子数组的数量是多少?