You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将R语言向量映射为对应列表的层级标签?

向量到列表层级标签的映射实现方法

基础R高效解法

先构建值与层级标签的映射关系,再通过匹配快速得到结果,适合数据量较大的场景:

# 定义原始数据
v1 <- c(8, 18, 19, 22, 23, 26, 36, 51, 52, 69, 72, 78, 89, 94, 105)
L1 <- list(c(8, 18, 19), c(22, 23, 26, 36), c(51, 52), c(69, 72, 78), c(89, 94), c(105))
v2 <- c(22,22,26,105)

# 构建映射表:将列表元素展开,对应到所属层级
map_values <- unlist(L1)
level_tags <- rep(seq_along(L1), sapply(L1, length))

# 匹配得到结果
result_v1 <- level_tags[match(v1, map_values)]
result_v2 <- level_tags[match(v2, map_values)]

# 查看输出
result_v1
# [1] 1 1 1 2 2 2 2 3 3 4 4 4 5 5 6
result_v2
# [1] 2 2 2 6

tidyverse直观解法

如果使用purrr包,可直接遍历向量元素,查找其所属的列表索引,代码更直观:

library(purrr)

result_v1 <- map_int(v1, ~ which(sapply(L1, function(x) .x %in% x)))
result_v2 <- map_int(v2, ~ which(sapply(L1, function(x) .x %in% x)))

注意事项

  • 如果向量中存在不在L1任何子列表中的元素,match会返回NA,可通过replace(result_v1, is.na(result_v1), 0)(或其他自定义标记值)处理缺失情况;
  • 基础R方法效率更高,因为仅需一次匹配操作;purrr方法会遍历每个元素逐一判断,数据量大时性能差异明显。

内容的提问来源于stack exchange,提问作者Tou Mou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:41:13