【发布时间】:2019-06-07 13:36:38
【问题描述】:
我有以下列表:
> list(c(3, 4, 5, 8), c(2, 6, 9, 10), c(1, 7))
[[1]]
[1] 3 4 5 8
[[2]]
[1] 2 6 9 10
[[3]]
[1] 1 7
所以我们可以说 3 属于第 1 组,6 属于第 2 组,7 属于第 3 组,依此类推。我需要一个反向映射,即我想要拥有一个属于它的组 id 的每个数字(参见预期输出):
> list(3, 2, 1, 1, 1, 2, 3, 1, 2, 2)
[[1]]
[1] 3
[[2]]
[1] 2
[[3]]
[1] 1
[[4]]
[1] 1
[[5]]
[1] 1
[[6]]
[1] 2
[[7]]
[1] 3
[[8]]
[1] 1
[[9]]
[1] 2
[[10]]
[1] 2
我认为purrr::transpose 应该完成这项工作,但它并不完全符合我的意图,是吗?如何做呢?
PS。最终,我只需要一个形式的向量:3 2 1 1 1 2 3 1 2 2,但我认为unlist() 足以转换。
【问题讨论】:
-
我很抱歉,但我不知道如何从给定的输入中获取
3 2 1 1 1 2 3 1 2 2,至少我不清楚。谢谢 -
@PKumar: 1 在第 3 组,2 在第 2 组,3 在第 1 组,4 在第 1 组,5 在第 1 组 ...
-
我们从 1 开始,看看 1 属于哪个组 - 我们可以看到它在第 3 组,即列表的第 3 个元素。然后我们在 2:10 进行检查。