r - R函数(循环?)为数据集中的每一列创建一个新图
问题描述
我正在尝试编写代码以使用我的数据集并为数据集的每一列制作一个新图形,而不是每次在代码中都为 y 写出一个新值。
我有一个数据集,其中每一行是一个人,每一列是血液中的测量值(即胰岛素、葡萄糖等)。我有一些额外的列,其中包含我用于我的组的描述性类别(即瘦、肥胖)。我想为这些列测量中的每一个制作一个图表(即,一个图表用于胰岛素,另一个用于葡萄糖,等)。我有 90 个不同的变量要循环。
我已经想出了如何为每一个绘制箱线图,但不知道如何让代码“循环”?这样我就不必为每个变量重新编写代码。
以 mtcars 数据集为例,我让它制作了一个 y 为 disp 的图,然后是另一个 y = hp 和 y = drat 的图。
data("mtcars")
#boxplot with individual points - first y variable
ggplot(data = mtcars, aes(x = cyl, y = disp)) +
geom_boxplot()+
geom_point()
#boxplot with individual points - 2nd y variable
ggplot(data = mtcars, aes(x = cyl, y = hp)) +
geom_boxplot()+
geom_point()
#boxplot with individual points - 3rd y variable
ggplot(data = mtcars, aes(x = cyl, y = drat)) +
geom_boxplot()+
geom_point()
如何进行设置,以便我的代码自动循环遍历数据集中的所有变量(我有 90 个)?
解决方案
这是一个基本的解决方案,您将在其中填充vector_of_yvals
90 个变量以进行循环:
library(tidyverse)
plot_func <- function(yval){
p <- ggplot(data = mtcars, aes(x = cyl, y = yval)) +
geom_boxplot()+
geom_point()
p
}
vector_of_yvals <- c("disp", "hp", "drat")
list_of_plots <- map(vector_of_yvals, plot_func)
您可以通过执行以下操作填充vector_of_yvals
数据框中的所有变量:
vector_of_yvals <- colnames(mtcars)
这会给你一个向量:
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
如果你不想包含cyl
在你的向量中,你可以像这样过滤掉它:
vector_of_yvals <- vector_of_yvals %>% .[. != "cyl"]
推荐阅读
- javascript - 箭头函数中的 this 关键字绑定问题
- visual-studio-code - 如何在 Visual Studio Code 中编辑 Markdown 的语言配置?
- c - 如何以双精度打印?
- java - 有没有办法在测试之间停止 micronaut 计划的工作?
- php - php 和 mysqli 的注册表单不起作用
- javascript - 下面给出的 api 正在使用本地地址,但在上传到 github 后显示错误
- angularjs - 通过将控制器更改为组件来准备从 AngularJS 迁移到 Angular2+ 的项目
- python - 使用 Python 开发工具包将 Amazon PA API 响应保存到 JSON 文件
- javascript - 如何在 react-native 中优化 Flatlist,同时呈现包含大数据的长列表?
- c - 为什么可以将另一种类型的参数传递给函数?