【问题标题】:Map function in PurrPurr 中的地图功能
【发布时间】:2021-11-10 02:15:14
【问题描述】:

我正在尝试使用 map 和 ggplot 为每个 PAT 创建线图。以下代码不起作用,我也尝试过传入一个列表

Lb1 <- labs[, c("PAT","RES","PARAMCD","AVISITN","LBSTNRHI")]
subj <- unique(lb1$PAT)
p1 <- map(.x = subj, .f = ~ lb1 %>%  
  filter(SUBJID == subj[.x] & PARAMCD %in% c("CA", "HGB", "BILI", "BILDIR")) %>% 
  ggplot(aes(VISIT,AVAL,color = PARAMCD)) +
  geom_point() +
  geom_line() +
  ggtitle(label = subj[.x]))
p1

【问题讨论】:

  • 如果可以共享您的数据,您需要将 data.frame 传递给 ggplor2
  • 我在过滤 PAT 和 PARAMCD %in% c("CA", "HGB", "BILI", "BILDIR")) 后传递数据帧 lb1
  • (1) 您定义Lb1(大写“L”)和稍后引用lb1 %&gt;% ...(小写“L”)。 (2) 我们对数据一无所知,因此猜测应该发生什么是高度推论的。 (3) 您正在将list 创建为p1,您是否期待多个情节?真的很难说。 (4) "code doesn't work" 什么都不做:what 不工作?它是否绘制了一些看起来错误的东西?它会产生警告/错误吗?它什么都不做,只是返回提示?

标签: r list dictionary ggplot2


【解决方案1】:

如果您不共享数据,总是很难提供帮助。

我可以在您的代码中发现一些错误/不一致之处。

  1. 首先,您在 subj (subj &lt;- unique(lb1$PAT)) 中拥有 PAT 列的唯一值,但后来在 map 中,您在 filter SUBJID 列中拥有这些值。那是对的吗?或者您是否应该在subj 中拥有唯一的SUBJID 值,即subj &lt;- unique(lb1$SUBJID)

  2. 您在map 中传递subj 的值,所以我认为subj[.x] 没有意义。 .x 已经有了你想要的值,所以你可以直接使用它。

试试-

library(purrr)
library(ggplot2)

p1 <- map(.x = subj, .f = ~ lb1 %>%  
            filter(SUBJID == .x & PARAMCD %in% c("CA", "HGB", "BILI", "BILDIR")) %>% 
            ggplot(aes(VISIT,AVAL,color = PARAMCD)) +
            geom_point() +
            geom_line() +
            ggtitle(.x)
          )
p1

【讨论】:

  • SUBJ 和 PAT 是侧面的错字。我按照您的建议使用了 .x,并且能够创建所有图。谢谢!
  • p1 是大约 12 个 ggplot 对象的列表。我正在使用拼凑库将所有图表放在一起。我正在使用以下代码,这看起来不是最有效的方式。有什么建议?库(拼凑) testxx
  • 你可以使用patchwork::wrap_plots(p1, ncol = 4, nrow = 3)
猜你喜欢
  • 2021-06-29
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 2015-06-08
  • 2015-03-08
  • 1970-01-01
  • 2011-06-14
  • 2013-12-31
相关资源
最近更新 更多