获得不同的单词组合

时间:2015-10-14 10:17:14

标签: r text

我有一个字符串ch,我希望得到一个特定的输出out。请参阅以下示例。

ch <- "A B"
out <- "A B AB"

ch <- "A B C"
out <- "A B C AB BC AC ABC"

ch <- "A B C D"
out <- "A B C D AB BC CD AC AD BD ABC ABD ACD BCD ABCD"

基本上我希望得到字符串中所有单词的所有可能前进组合,如上所述。

如何在R中以最简单的方式实现这一目标?

编辑:

我试过以下。但它似乎提供了所有可能的组合,在这种情况下,很难过滤掉我需要的案例。

e <- c("A", "B", "C")
> r <- expand.grid(e, e, e)
> r
   Var1 Var2 Var3
1     A    A    A
2     B    A    A
3     C    A    A
4     A    B    A
5     B    B    A
6     C    B    A
7     A    C    A
8     B    C    A
9     C    C    A
10    A    A    B
11    B    A    B
12    C    A    B
13    A    B    B
14    B    B    B
15    C    B    B
16    A    C    B
17    B    C    B
18    C    C    B
19    A    A    C
20    B    A    C
21    C    A    C
22    A    B    C
23    B    B    C
24    C    B    C
25    A    C    C
26    B    C    C
27    C    C    C

1 个答案:

答案 0 :(得分:4)

一个选项是split字符串按空格(strsplit(str1, ' ')),按照&#39; v1&#39;的长度顺序循环,得到&#{1}} 39; v1&#39;对于序列,combn输出列中的元素(paste),apply(..., 2, ...)unlist。我们可以创建一个函数(&#39; f1&#39;)执行这些操作并将其用于多个字符串。

paste