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

使用purrr的map函数配合ggplot为每个PAT绘制折线图报错求解

代码错误点及修正方案

核心错误梳理

  • 大小写不匹配:你创建的数据集命名为Lb1(首字母大写),后续调用时用的是小写lb1,R对变量名大小写敏感,会直接报对象未找到错误。
  • 迭代逻辑错误:你将PAT的唯一值向量subj传入map的.x参数,此时匿名函数内的.x本身就是单个PAT的取值,不是索引,不需要用subj[.x]的方式取值,该写法会把PAT值当下标读取,匹配到完全错误的结果。
  • 列名不一致:你提取Lb1时仅选中了PAT、RES、PARAMCD、AVISITN、LBSTNRHI五列,后续filter用了不存在的SUBJID列,ggplot映射用了不存在的VISIT、AVAL列,都会触发列未找到的报错。

修正后代码

# 第一步:选入所有需要用到的列,以下列名可按需替换为你实际的字段名
lb1 <- labs[, c("PAT","RES","PARAMCD","AVISITN","LBSTNRHI")]
# 提取所有唯一的受试者PAT编号
subj <- unique(lb1$PAT)
# 迭代生成每个受试者的折线图
p1 <- map(.x = subj, .f = ~ lb1 %>%  
            filter(PAT == .x & PARAMCD %in% c("CA", "HGB", "BILI", "BILDIR")) %>% 
            ggplot(aes(x = AVISITN, y = RES, color = PARAMCD)) +
            geom_point(na.rm = TRUE) +
            geom_line(na.rm = TRUE) +
            ggtitle(label = .x))
# 查看第一个受试者的测试图
p1[[1]]

补充说明

  • 如果你实际的访视字段名为VISIT、检测结果字段名为AVAL、受试者ID字段名为SUBJID,请在第一步选列时就把对应字段加进去,同步修改filter和aes内的映射字段即可。
  • 若需要批量导出所有图片,直接遍历p1列表配合ggsave使用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:39:01