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

将单篇文献研究领域列表转换为同前缀对应同行的DataFrame

解决R列表转DataFrame的问题

实现思路

  • 将嵌套列表转换为普通DataFrame,简化后续处理流程
  • 从name字段中提取开头的数字编码,区分两位编码(对应division列)和四位编码(对应group列)
  • 以编码的前两位为匹配依据,将两类数据合并到同一行,并保留原始条目顺序

代码实现

首先定义原始列表:

my_list <- list(
  list(id = "80067", name = "3403 Macromolecular and Materials Chemistry"),
  list(id = "80011", name = "40 Engineering"),
  list(id = "80005", name = "34 Chemical Sciences")
)

执行以下处理步骤:

# 1. 转换嵌套列表为DataFrame,并记录原始顺序
df <- do.call(rbind.data.frame, my_list)
df$original_order <- seq(nrow(df))

# 2. 提取名称开头的数字编码,并判断编码长度
df$code_prefix <- substr(df$name, 1, regexpr(" ", df$name) - 1)
df$code_length <- nchar(df$code_prefix)

# 3. 拆分出division(两位编码)和group(四位编码)数据
division_df <- df[df$code_length == 2, c("name", "code_prefix", "original_order")]
colnames(division_df) <- c("division", "division_code", "original_order")

group_df <- df[df$code_length == 4, c("name", "code_prefix")]
group_df$division_code <- substr(group_df$code_prefix, 1, 2)
colnames(group_df) <- c("group", "group_code", "division_code")

# 4. 合并数据并恢复原始顺序
result <- merge(division_df, group_df[, c("group", "division_code")], 
                by = "division_code", all.x = TRUE)
result <- result[order(result$original_order), c("division", "group")]

最终结果

运行代码后得到的result与期望输出完全一致:

> result
             division                                        group
2        40 Engineering                                       <NA>
1 34 Chemical Sciences 3403 Macromolecular and Materials Chemistry

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:17:14