我正在尝试编写代码来使用我的数据集并为数据集的每一列创建一个新图表,而不是每次都在代码中为 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 个变量)?
最佳答案
这是一个基本解决方案,您可以使用 90 个变量填充 vector_of_yvals
以进行循环:
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"]
关于R 函数(循环?)为数据集中的每一列创建一个新图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62331168/