导出通过循环变量列表创建的一系列图(在R中)

时间:2015-07-11 18:43:04

标签: r loops ggplot2

我使用的数据集有大约300个变量。我想创建一个变量子集(仅在列表中)并使用该列表为该变量名称的每个变量创建和导出直方图。我正在使用ggplot2。

到目前为止,我有:

variables = c("race","gender") #my list of variables to be used

for(i in 1:2){
#creates the name for the plot
  jpeg(file=paste("myplot_", variables[i], ".jpg", sep="")) 
#creates and saves the plot 
  print(qplot(variables[i], data=mydata, geom = "histogram"))
  dev.off()
}

现在它正在创建图表,但它只是一个大盒子而且似乎没有从数据集中读取变量(mydata)

感谢您的帮助。我看过其他一些类似的帖子,但是还没有能够解决这个问题。 标记

2 个答案:

答案 0 :(得分:1)

出于愚蠢的运气,这似乎有效。有更好的方法吗?

variables = c("race","gender")

for(Var in variables){
  jpeg(file=paste("myplot_", Var, ".jpg", sep=""))
  print(qplot(mydata[,Var], data=mydata, geom = "histogram"))
  dev.off()
}

答案 1 :(得分:0)

以下是使用ggsaveaes_string的带注释的示例。它比你的例子稍长,但相对简单易懂。

 #load ggplot
 library(ggplot2)

 #make some data
 df <- data.frame(race=c(1,2,3),
                  gender=c(4,5,6), 
                  country=c("USA","Canada","Mexico"))

# write a function to make a plot
# note the ggsave and aes_string functions 
makeplot <- function(df,name){
     title <- paste0("myplot_",name,".jpg")
     p     <- ggplot(data= df,aes_string(x=name)) + 
                geom_histogram()
     ggsave(p, file=title)
 }

 # make your vector of column headings
 varlist = c('race','gender')

 # run your function on each column heading
 for (var in varlist) makeplot(df,var)