使用文件夹名称和文件名保存图表

时间:2015-11-12 12:45:35

标签: r

我有这个代码来绘制包含不同数据文件夹的目录中的数据。到目前为止,使用此代码我可以生成图形并将其保存在数据文件所属的每个文件夹中。 这段代码的问题是它只保存一个文件(无论我在一个文件夹中有多少个数据文件。) 其次,我想保存带有文件夹名称和文件名称的图,例如foldername-filename.png。 代码:

setwd("working directory")
folders <- list.dirs(full.names = TRUE)

lapply(folders[-1], function(dir){
  files <- list.files(dir, pattern="*.csv", full.names=TRUE, recursive=FALSE)

 lapply(files, function (file) {

  t <- read.csv(file, header=T)

#some plotng function

P1<- ggplot(df, aes(Time, Date, fill =reading)) + geom_tile(colour = "grey") + scale_fill_gradientn(colours=c("darkblue", "red", "yellow"),   values=rescale(c(0, 1000, 2000)),  guide="colorbar")+scale_x_discrete(breaks = lab1)

  ggsave(P1, filename = paste(dir, paste0("plot.jpeg"), sep = "/"))

  })
 })

我有一个解决方案,但它给了我一个错误,只是想知道我们是否有其他选择。非常感谢!

1 个答案:

答案 0 :(得分:1)

R可能会在文件夹中写入n个jpegs,其中n是csvs的数量。但是,因为它们都被命名为相同,所以他只是覆盖它们。尝试将ggsave命令更改为:

ggsave(P1, filename = paste(dir, paste0("plot_",gsub('.csv','',file),".jpeg"), sep = "/"))

gsub命令用空格替换.csv(仅包含文件名)。

此外,您可能希望检查文件夹中的项目。也许其中一些不是csv文件。一个很好的方法是使用grepl:

files <- c('a.csv','b.Rdata')
grepl('.csv$',files)
files_csv <- files[grepl('.csv$',files)]

也许尝试在您的问题中包含错误消息。没有错误,就更难猜出出了什么问题。