使用 R 从多个 .csv 文件绘制多个图表

1 csv pdf loops r ggplot2

我对 R 很陌生,遇到了一个根据我的知识/书籍/互联网无法解决的问题。

所以问题是这样的:

我有 60 个 csv 文件,我想为每个文件绘制一个散点图。它们的格式都相同,所以我(理论上)应该能够通过一个很好的循环来解决这个任务。这是我的代码:

library(tools)
library(ggplot2)
files = dir('~/Klima_hist_CPL/tillnov/ClimDatK1/*.csv')
for (Y in list.files(path = "~/Klima_hist_CPL/tillnov/ClimDatK1/",pattern =".csv", 
     all.files = FALSE, full.names = TRUE, recursive = FALSE,
     ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)){
 myData<-read.csv(Y)
 pdf("~/Klima_hist_CPL/tillnov/ClimDatK1/mypdf.pdf", width = 4, height = 4)   
 print(ggplot(data = myData, aes(ACTION_DATE, TEMP)) 
   + geom_point(aes(x = myData$ACTION_DATE, y = myData$TEMP_SET),colour=('blue')) 
   + geom_point(aes(x = myData$ACTION_DATE, y = myData$TEMP_MEASURED), colour=('red') ))
#newFilename <-paste(file_path_sans_ext(basename(Y)),".jpg")
#fp <-paste('~/Klima_hist_CPL/tillnov/ClimDatK1/',newFilename)
#writeJPEG(output,file=fp,append=FALSE)
 dev.off()
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我尝试了一些并使用了之前任务中的代码片段。不幸的是,它们组合起来不起作用。

加起来:

  • 多个 CSV 文件
  • 全部格式相同
  • 每一个都应该被绘制出来
  • 我不在乎这会产生一个 pdf 还是 60 个 pdf

Pau*_*tra 5

我会将所有数据读入一个大 data.frame 并使用构面来制作ggplot2. 一些显示一般代码模式的伪代码:

library(dplyr)
list_of_dfs = lapply(list.files('path/to/files', pattern = '*csv'), 
    function(x) {
        dat = read.csv(x)
        dat$fname = x
        return(dat)
    })
one_big_df = list_of_dfs %>% bind_rows()
one_big_df %>% ggplot(aes(x = x, y = y)) + geom_point() + facet_wrap(~ fname)
Run Code Online (Sandbox Code Playgroud)

然后可以使用以下命令保存绘图ggsave

ggsave('plot.png', width = 16, height = 9)
Run Code Online (Sandbox Code Playgroud)