我有以下列表:
> 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
Run Code Online (Sandbox Code Playgroud)
所以我们可以说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
Run Code Online (Sandbox Code Playgroud)
我认为purrr::transpose应该做的工作,但它并不完全符合我的意图,是吗?怎么做到呢?
PS.最终,我只需要一个形式的矢量:3 2 1 1 1 2 3 1 2 2但是我认为unlist()已经足够转换.
这是一个基本解决方案...
list <- list(c(3, 4, 5, 8), c(2, 6, 9, 10), c(1, 7))
rep(1:length(list), sapply(list, length))[order(unlist(list))]
Run Code Online (Sandbox Code Playgroud)