首页 > 解决方案 > 在 R 中生成向量值的运行组合

问题描述

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

假设我有window.size一个3

vector <- c("goofy", "mickey", "donald", "foo", "bar")

这就是我需要的输出

from  |  to
------+-----
goofy | mickey
goofy | donald
mickey| donald
mickey| foo
donald| bar
donald| foo
foo   | bar

由于这将在一组蒙特卡罗迭代中结束,windows.size因此应该是参数化的

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

提前致谢!

标签: rdplyrtidyr

解决方案


rollapplydplyr。, c, ugliness 需要将 的输出转换do.call为函数的数据框:as.data.framecombndplyr

library(zoo)
library(dplyr)

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

结果:

    from     to
1  goofy mickey
2 mickey donald
3 donald    foo
4  goofy donald
5 mickey    foo
6 donald    bar
7    foo    bar

推荐阅读