我需要实现的基本上是 vector 值的所有组合的列表,但要运行给定长度的低谷窗口。显示起来比解释起来容易。

假设我有一个window.size3

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可以很容易地做到这一点,但我不知道该怎么做。

提前致谢!

最佳答案

使用rollapplydplyr。需要使用cdo.callas.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"))

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

关于r - 在R中生成矢量值的运行组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52061341/

10-10 17:42