我对 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)
正如您所看到的,我尝试了一些并使用了之前任务中的代码片段。不幸的是,它们组合起来不起作用。
加起来:
我会将所有数据读入一个大 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)
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |