【发布时间】:2020-02-05 02:14:33
【问题描述】:
我有一张事件表,上面有事件发生时间的指示。它们已经按时间排序。
events <- data.frame(name=c("sow", "water", "harvest"), time=c("March", "May", "June"), stringsAsFactors = FALSE)
我想获得一个列表,列出所有事件的 2 元素排列,这些排列发生在彼此之后(没有重复)。
earlier later
sow water
sow harvest
water harvest
我知道 R 中有几个函数用于获取某种组合或排列,但我没有找到任何考虑输入中出现顺序的函数。
有没有这样的功能,还是我必须自己实现?
【问题讨论】:
-
如果事件按时间顺序排列,您可以:
t(combn(events$name, 2))? -
@Ben 是的,它们是订购的,或者至少很容易订购,因为我有专栏。什么是 t 函数?我不记得以前看过它,搜索
r t不会返回太多相关内容。 -
@Ben 啊,我明白了,谢谢。并且
combn是否保证始终返回组合,以便首先列出具有“较小数字”的项目,或者这是理论上可能在版本之间发生变化的实现细节?我没有看到帮助文件中提到的顺序(我这次是在控制台中打开的:)) -
@Ben 我很乐意将其视为答案。某天更改顺序的缺点纯粹是理论上的,它比现有答案要简洁得多。
标签: r permutation