2015-09-26 29 views
0

我有一堆由Python代碼生成的csv文件。該文件被命名爲在R中遍歷一組csv文件來生成一系列jpg

new_pareto_1.csv, new_pareto_2.csv, new_pareto_3.csv, etc. 

new_paretoF_1.csv, new_paretoF_2.csv, new_paretoF_3.csv, etc. 

我需要適應我的代碼,使文件的所有對順序與此代碼繪製:

library(ggplot2) 

dat <- read.csv("/new_pareto_1.csv", check.names = FALSE) 

dat2 <- read.csv("/new_paretoF_1.csv", check.names = FALSE) 

dat$modu = dat$modu 
dat$mnc = dat$mnc 
dat$eff = dat$eff 

dat2$modu = dat2$modu 
dat2$mnc = dat2$mnc 
dat2$eff = dat2$eff 

res2 <- do.call(rbind, combn(1:2, 2, function(ii) 
     cbind(setNames(dat2[,c(ii, setdiff(1:2, ii))], c("x", "y")), 
       var=paste(names(dat2)[ii], collapse="/")), simplify=F)) 


res <- do.call(rbind, combn(1:2, 2, function(ii) 
    cbind(row=seq(nrow(dat)),setNames(dat[,c(ii, setdiff(1:2, ii))], c("x", "y")), 
     var=paste(names(dat)[ii], collapse="/")), simplify=F)) 

ggplot(res, aes(x=x, y=y, color=row))+ geom_point(shape=4, alpha = .9) + 
geom_line(data = res2, aes(x=x, y=y), colour = "black") + 
    scale_color_gradientn(colours=rev(brewer.pal(9,"Spectral")))+ 
    facet_wrap(~ var, scales="free") + 
    scale_y_continuous("y", limits = c(0.38, .5)) + 
    scale_x_continuous("x", limits = c(.25, .75)) 

並保存到一堆的JPG文件被稱爲:

solutions_1.jpg, solutions_2.jpg, solutions_3.jpg, etc. 

如何在R中實現這一點?

非常感謝!

回答

1

您可以創建一個循環來讀取一對文件,處理它們並寫入一個jpeg,然後對每個連續的文件對執行相同的操作。我沒有測試下面的代碼,因爲我沒有樣品數據可以使用:

# Vectors with the names of the two file groups we want to work with 
fg1 = list.files(pattern="new_pareto_[0-9]*\\.csv") 
fg2 = list.files(pattern="new_paretoF_[0-9]*\\.csv") 

# Loop over each pair of files 
for (i in 1:length(fg1)) { 

    dat = read.csv(fg1[i]) 
    dat2 = read.csv(fg2[i]) 

    ... processing steps ... 

    p = ggplot(res, aes(x=x, y=y, color=row))+ geom_point(shape=4, alpha = .9) + 
    geom_line(data = res2, aes(x=x, y=y), colour = "black") + 
    scale_color_gradientn(colours=rev(brewer.pal(9,"Spectral")))+ 
    facet_wrap(~ var, scales="free") + 
    scale_y_continuous("y", limits = c(0.38, .5)) + 
    scale_x_continuous("x", limits = c(.25, .75)) 

    # Get file number 
    num = gsub(".*_([0-9]*).*", "\\1", fg1[i]) 

    # Write to jpeg file. Set width and height to desired values. 
    jpeg(paste0("solutions_", num, ".jpg"), 800, 600) 
    p 
    dev.off() 
}