R:限制排列比使用for循环更有效

Cla*_*eri 2 recursion for-loop r

我试图a每次都重复选择3个元素的可变长度char矢量进行置换。排序仅对第一个元素计数,而对第二个和第三个元素不计算(例如abc!= bac!= cab,但是abc = acb和bca = bac)。每组3个置换元素应在数据框中为一行b

具有字母abcde的向量将产生以下预期输出:

abc
abd
abe
acd
ace
ade

bac
bad
bae
bcd
bce
bde

cab 
cad
cae
cbd
cbe
cde

dab
dac
dae
dbc
dbe
dce

eab
eac
ead
ebc
ebd
ecd
Run Code Online (Sandbox Code Playgroud)

我认为使用3 for循环可以实现此输出,但是如果向量较长,则速度会很慢。

abc
abd
abe
acd
ace
ade

bac
bad
bae
bcd
bce
bde

cab 
cad
cae
cbd
cbe
cde

dab
dac
dae
dbc
dbe
dce

eab
eac
ead
ebc
ebd
ecd
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.2.1)创建于2019-07-17

如何在更少的时间内获得相同的结果。递归更快吗?

任何帮助是极大的赞赏。谢谢。

Gra*_*vic 5

我提出以下解决方案:

a = letters[1:5]
A = t(combn(a,3)) # create all possible three-letter combinations, 
                  # disregarding the order 
Full = rbind(A, A[,3:1], A[,c(2,3,1)]) # put every of the elements of the 
                                       # differing combinations in first place once
Run Code Online (Sandbox Code Playgroud)