在R中生成矢量值的运行组合

Gab*_*e B 2 r dplyr tidyr

我需要实现的基本上是矢量值的所有组合的列表,但是运行给定长度的槽.展示比解释更容易.

让说我有一个window.size3

vector <- c("goofy", "mickey", "donald", "foo", "bar")
Run Code Online (Sandbox Code Playgroud)

这就是我需要的输出

from  |  to
------+-----
goofy | mickey
goofy | donald
mickey| donald
mickey| foo
donald| bar
donald| foo
foo   | bar
Run Code Online (Sandbox Code Playgroud)

由于这将以蒙特卡罗迭代集合结束,因此windows.size应该是参数化的

我认为用dplyr和tidyr可以轻松完成,但我无法弄清楚如何.

提前致谢!

avi*_*seR 5

随着rollapplydplyr.的c,do.call,as.data.frame丑陋需要到的输出转换combn为一个数据帧dplyr的功能:

library(zoo)
library(dplyr)

rollapply(vector, 3, combn, 2, simplify = FALSE) %>%
  c() %>%
  do.call(rbind, .) %>%
  as.data.frame() %>%
  distinct() %>%
  setNames(c("from", "to"))
Run Code Online (Sandbox Code Playgroud)

结果:

    from     to
1  goofy mickey
2 mickey donald
3 donald    foo
4  goofy donald
5 mickey    foo
6 donald    bar
7    foo    bar
Run Code Online (Sandbox Code Playgroud)