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

R:如何将函数应用于数据帧,以绘制具有唯一因子组合的每个子集的曲线图,r,function,loops,plot,apply,R,Function,Loops,Plot,Apply,我想了解如何使用apply函数或任何类似函数来绘制数据帧的多个子集。让我们假设我想要使用mtcars数据框,并且我想要为“齿轮”和“carb”的每个组合绘制一个图 我读到,人们只需编写一个函数,然后使用lappy创建数据帧的子集,并为每个子集绘制图。那么,我怎样才能重写它以使用lappy或类似的东西呢? gg_test = function(data) { title = paste("gear",data[,"gear"][1],"carb",data[,"carb"][1])

我想了解如何使用apply函数或任何类似函数来绘制数据帧的多个子集。让我们假设我想要使用mtcars数据框,并且我想要为“齿轮”和“carb”的每个组合绘制一个图

我读到,人们只需编写一个函数,然后使用lappy创建数据帧的子集,并为每个子集绘制图。那么,我怎样才能重写它以使用lappy或类似的东西呢?

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)
    }
}

您可以使用
split
interaction
将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)
} 
我修改了plot函数以返回绘图,而不是打印出来

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

谢谢。谢谢很好用!:-)