我有一个词的向量:
str <- c("The", "Cat", "Jumped")
我想找出所有词语的组合,并在任何多于一个词语的组合之间插入“+”,类似于:
paste(str, collapse = " + ")
# [1] "The + Cat + Jumped"
我期望的输出是:
want <- c("The", "Cat", "Jumped",
"The + Cat", "The + Jumped",
"Cat + Jumped",
"The + Cat + Jumped")
还请注意,我只需要组合,所以顺序并不重要,"The + Cat"
或"Cat + The"
都可以,但我不想两者都要。
我尝试了combn
(here)、outer
(here)、expand.grid
(here)的一些方法,并遵循@Akrun对类似问题r - Get different combinations of words的建议,但没有效果。
5条答案
按热度按时间bmp9r5qi1#
您可以使用
combn
表示所有可能的大小,然后自己折叠结果z9smfwbn2#
您可以像下面这样使用
intToBits
它给出了
sg2wtvxw3#
0g0grzrc4#
下面是@MrFlick代码的变体:
szqfcxe25#
使用
rje
包中的powerSet
函数:注意:第一个元素对应于空集,更多信息请参见Power set的wiki。