如何解决使用应用函数时如何控制图的行/列打印
考虑以下数据框:
dat <- data.frame(
ID = c(1:200),var1 = rnorm(200),var2 = rnorm(200),var3 = rnorm(200),var4 = rnorm(200)
)
我们想使用 lapply()
函数将 ggqqplot
包中的 ggpubr
函数应用到 dat
的第 2:4 列:
library(tidyverse)
library(ggpubr)
vars <- paste0(names(dat[,2:5]))
lapply(vars,FUN=ggqqplot,data=dat)
这很好用,但我们想并排打印数字(例如,2 行 2 列)。我们如何使用应用框架来做到这一点?
解决方法
ggqqplot
允许使用参数 facet_by
的方面(检查 ?ggqqplot
),因此您所要做的就是将数据转换为方面友好的长格式数据。见下文
dat_melt <- reshape2::melt(dat,measure.vars = vars) # converts data into long-form
ggqqplot(dat_melt,x="value",facet.by = "variable")
编辑:
如果你还想用apply
函数,下面是我能想到的最简单的方案
plist <- lapply(vars,FUN = function (x) ggqqplot(dat,x = x))
cowplot::plot_grid(plotlist = plist,ncol = 2)
或管道友好的等价物
lapply(vars,x = x)) %>%
{cowplot::plot_grid(plotlist=.,ncol = 2)}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。