r - 使用应用函数时如何控制绘图的行/列打印
问题描述
考虑以下数据框:
dat <- data.frame(
ID = c(1:200),
var1 = rnorm(200),
var2 = rnorm(200),
var3 = rnorm(200),
var4 = rnorm(200)
)
我们想使用该lapply()
函数将ggqqplot
函数从ggpubr
包应用到列 2:4 dat
:
library(tidyverse)
library(ggpubr)
vars <- paste0(names(dat[,2:5]))
lapply(vars, FUN=ggqqplot, data=dat)
这很好用,但我们希望并排打印图形(例如,2 行、2 列)。我们如何使用 apply 框架来做到这一点?
解决方案
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, FUN = function (x) ggqqplot(dat,x = x)) %>%
{cowplot::plot_grid(plotlist=.,ncol = 2)}
推荐阅读
- mysql - 在 INPUT 中使用 2 个表的简单 MySQL Pivot
- gradle - React Native 项目 Android Gradle 失败(React-Native-Reanimated Fail)
- javascript - 基于 clientHeight 的 Intersection Observer 更改类
- css - 这应该有效吗?即使父元素的高度未定义,顶部和底部属性也接受 % 值
- android - ViewPager 为空
- javascript - React - UseEffect 钩子与 Redux 存储在依赖数组中,更新状态以无限循环结束
- c# - 简单方法仅适用于消息框
- python - Python Selenium 悬停动作在内存中连接
- css - 背景图像在 Django 中无法正确呈现
- laravel-mix - 使用 Laravel Mix 动态导入 React 脚本