簡體   English   中英

讀取多個csv文件並獲取R中每個csv文件的文件名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM