我有一个大的整数向量来测量事件的频率。 像这样的东西
1
23
45
23
3
2
45
我想以这种方式反转数字,将每个数字替换为有序列表中的相反数字:
1 becomes 45
2 becomes 23
3 becomes 3
23 becomes 2...
等等.... 考虑到数字重复。 除了创建和合并两个反转的唯一值向量之外,一种简单而优雅的方法(到目前为止我唯一想到的(? 寻求数学方法
预期产出:
45
2
1
2
3
23
1
好的。我想这就是你想要的。首先,你有你原来的价值观
x <- c(1, 23, 45, 23, 3, 2, 45)
然后我们得到一个唯一值的排序列表
uniqx <- sort(unique(x))
然后,我们可以将列表中的每个元素与其中一个唯一值匹配match()
,然后将其替换为唯一值反向列表中的值。
rev(uniqx)[match(x, uniqx)]
# [1] 45 2 1 2 3 23 1