使用示例可能更容易解释自己。假设我有一个列表:
s <- list( c(5,3,4,3,6),c("A","B","C","D","E"))
对于所有子向量,s 始终具有相同数量的对象。不允许使用 NA 值。向量包含不同的类型。
我想要实现的是:
rank v1 v2
1 3 "B"
2 3 "D"
3 4 "C"
4 5 "A"
5 6 "E"
基本上,要根据第一个向量(按升序)对列表进行排序,然后(在平局的情况下)使用词汇顺序查看第二个向量。在 C++ 世界中,我唯一需要做的就是为我的对象定义 operator<,但是我对 R 很陌生,而且我的想法已经不多了。
我发现的最佳策略是遍历元素并为每对计算一个排名值(双倍)(例如,3“B”将产生最高排名,6“E”将产生最低排名),存储结果在另一个向量中并对其进行排序。然而,解决方案不是很好,因为找到一个好的排名函数可能很棘手,而且不容易泛化。
在我看来,这是一个普遍存在的问题,它必须是一种更好的方法。谁能指出我正确的方向?
谢谢你的帮助。