R中无重复的组合 [英] Combination without repetition in R

查看:0
本文介绍了R中无重复的组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取变量元素的长度为3的所有可能组合。尽管它在一定程度上与comn()一起工作,但我没有得到我想要的输出。下面是我的例子

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

我得到的输出如下所示

       [,1] [,2] [,3]
  [1,] "a"  "b"  "c" 
  [2,] "a"  "b"  "d" 
  [3,] "a"  "b"  "e" 

我对这个命令不是很满意,原因有两个。我希望得到的输出是"a+b+c""a+b+b"……,不幸的是,我无法使用Paste()或其他方法编辑输出。

我还期待着每组字母的一种组合,即我要么得到"a+b+c",要么得到"b+a+c",但不能两个都得到。

推荐答案

尝试如下内容:

x <- c("a","b","c","d","e")
d1 <- combn(x,3) # All combinations

d1 

#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] "a"  "a"  "a"  "a"  "a"  "a"  "b"  "b"  "b"  "c"  
# [2,] "b"  "b"  "b"  "c"  "c"  "d"  "c"  "c"  "d"  "d"  
# [3,] "c"  "d"  "e"  "d"  "e"  "e"  "d"  "e"  "e"  "e"

nrow(unique(t(d1))) == nrow(t(d1))
# [1] TRUE

d2 <- expand.grid(x,x,x) # All permutations 

d2

#     Var1 Var2 Var3
# 1      a    a    a
# 2      b    a    a
# 3      c    a    a
# 4      d    a    a
# 5      e    a    a
# 6      a    b    a
# 7      b    b    a
# 8      c    b    a
# 9      d    b    a
# ...

nrow(unique(d2)) == nrow(d2)
# [1] TRUE

这篇关于R中无重复的组合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆