[英]Reading multiple csv files and getting the filename of each csv file in R
我正在尝试读取多个csv文件,并使用ggplot对每个文件进行一些绘图。 我想使用每个输入文件的文件名打印图形。 每个csv文件都有6列,但是Im仅绘制1,2,5,6列。
我有一个代码,但仅适用于单个csv文件:
dat<-read.csv("D135_tmin.csv",header=TRUE)
dat$Year<-seq(ymd('1991-01-01'),ymd('2000-12-31'),"days")
dat2 <- dat[,c(1,2,5,6)]
names(dat2)[3:4] <- c("P10","P90")
dat2 <- melt(dat2,id.vars="Year")
ggplot(dat2[dat2$variable=="Tmin",],aes(Year,value))+
geom_line(linetype="dashed",color="black",size=0.25)+
geom_point(data=dat2,aes(Year,value,grp=variable,fill=variable),pch=21,size=2)+
scale_fill_manual(name="Legend",values=c("Tmin"="dark slate blue","P90"="green","P10"="orange"))
dev.print(pdf, file="D135_tmin.pdf")
当读取多个csv文件时,我使用以下命令:
temp=list.files(pattern="*.csv")
myfiles=lapply(temp,read.table,header=TRUE)
我的问题是,我将读取100个csv文件,并且输出的pdf应与输入的csv文件具有相同的名称。
有什么建议么?
您是否有不想使用for
循环的原因? 您可以这样做:
for (i in list.files(pattern="*.csv"){
dat <- read.csv(i)
dat$Year<-seq(ymd('1991-01-01'),ymd('2000-12-31'),"days")
dat2 <- dat[,c(1,2,5,6)]
names(dat2)[3:4] <- c("P10","P90")
dat2 <- melt(dat2,id.vars="Year")
ggplot(dat2[dat2$variable=="Tmin",],aes(Year,value))+
geom_line(linetype="dashed",color="black",size=0.25)+
geom_point(data=dat2,aes(Year,value,grp=variable,fill=variable),
pch=21,size=2)+
scale_fill_manual(name="Legend",values=
c("Tmin"="dark slate blue","P90"="green","P10"="orange"))
dev.print(pdf, file=sub("csv", "pdf", i))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.