R:如何将函数应用于数据帧,以绘制具有唯一因子组合的每个子集的曲线图
我想了解如何使用apply函数或任何类似函数来绘制数据帧的多个子集。让我们假设我想要使用mtcars数据框,并且我想要为“齿轮”和“carb”的每个组合绘制一个图 我读到,人们只需编写一个函数,然后使用lappy创建数据帧的子集,并为每个子集绘制图。那么,我怎样才能重写它以使用lappy或类似的东西呢?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])
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)
谢谢。谢谢很好用!:-)