R:如何将函数应用于数据框以绘制具有唯一因子组合的每个子集的图

R: How to apply a function to a data frame to make plots of each subset with a unique factor combination

我想了解如何使用应用函数或类似函数为数据框的多个子集绘制图表。假设我想使用 mtcars 数据框,并且我想为 "gear" 和 "carb" 的每个组合绘制一个图。

我读过 here,可以只编写一个函数,然后使用 lapply 创建数据框的子集并为每个子集绘图。那么我如何 重写它以使用 lapply 或类似的东西?

gg_test = function(data) {
    title = paste("gear",data[,"gear"][1],"carb",data[,"carb"][1])

    require(ggplot2)
    gg1 = ggplot(data, aes(x = mpg, y = cyl, color = disp)) + geom_point() +
        ggtitle(title)
    print(gg1)
} 

for (g in unique(mtcars[,"gear"])){
    for(ca in unique(mtcars[,"carb"])){
        df_sub = subset(mtcars, gear == g & carb == ca)
        gg_test(df_sub)
    }
}

您可以使用 splitinteraction 将 data.frame 分成块,然后您可以将绘图函数应用于:

gg_test = function(data) {
  title = paste("gear",data[,"gear"][1],"carb",data[,"carb"][1])

  require(ggplot2)
  ggplot(data, aes(x = mpg, y = cyl, color = disp)) + geom_point() +
    ggtitle(title)
} 

我将您的绘图函数修改为 return 绘图而不是打印出来。

plots <- lapply(split(mtcars, interaction(mtcars[,c("gear","carb")]), drop = TRUE), gg_test)

然后我将每个绘图存储在另一个可以按需打印的对象中。