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

使用sapply提取KEGGREST列表PATHWAY字段异常,求解决方案

解决KEGGREST提取PATHWAY字段合并为字符串的问题

问题场景

用KEGGREST获取化合物C01546、C05984的信息后,需要提取ENTRY、FORMULA、PATHWAY字段转换为数据框,但PATHWAY字段因包含多元素向量,直接用sapply提取会显示character,3这类标识,无法得到合并后的路径名称字符串。

解决方案代码

library(KEGGREST)
# 获取化合物信息
chem_info <- keggGet(dbentries = c("C01546", "C05984"))

# 构建目标数据框并处理PATHWAY字段
compound_df <- data.frame(
  ENTRY = sapply(chem_info, function(x) x$ENTRY),
  FORMULA = sapply(chem_info, function(x) x$FORMULA),
  PATHWAY = sapply(chem_info, function(x) {
    pathways <- x$PATHWAY
    # 根据路径数量处理格式
    switch(as.character(length(pathways)),
           "0" = "",
           "1" = pathways,
           paste(c(paste(pathways[-length(pathways)], collapse = ", "), pathways[length(pathways)]), collapse = ", and ")
    )
  }),
  stringsAsFactors = FALSE
)

# 查看结果
print(compound_df)

代码说明

  1. 提取ENTRY和FORMULA:通过sapply遍历chem_info列表,直接提取每个化合物的ENTRY和FORMULA字段,转换为数据框的列。
  2. 处理PATHWAY合并:自定义函数遍历每个化合物的PATHWAY向量:
    • 若没有路径,返回空字符串;
    • 若只有一条路径,直接返回该路径名称;
    • 若有多条路径,将前n-1条用逗号分隔,最后一条用", and "连接,符合需求的格式。
  3. 解决原代码问题:原代码直接用[[7]]提取PATHWAY时,因不同化合物的PATHWAY长度不同,sapply会返回列表,导致数据框列显示异常;通过合并字符串,将列表元素统一为单个字符值,彻底解决显示问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:21:00