我使用的数据集有大约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)
感谢您的帮助。我看过其他一些类似的帖子,但是还没有能够解决这个问题。 标记
答案 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)
以下是使用ggsave
和aes_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)