2014-11-22 21 views
0

我有一個由名爲「L1」的函數「mcsv_r()」和函數「gc()」生成的73個數據集的列表,用於生成一個圖。使用「lapply」我可以創建我的73個地塊。我需要保存並命名所有這些。我知道我可以用RStudio一個接一個地做。 但是我確定感謝「jpeg()」和「dev.off」並將它們與一個循環混合在一起,我可以用幾行代碼來完成它。如何使用R保存並命名多個圖塊

out <- setwd("C:/") 
dir(out) 
mcsv_r(dir(out)) 

gc <- function(x){ 
    xlim <- c(-13.08, 8.68) 
    ylim <- c(34.87, 49.50) 
    map("world", lwd=0.05, xlim=xlim, ylim=ylim) 
    map.axes() 
    symbols(x$lon, x$lat, bg="#e2373f", fg="#ffffff", lwd=0.5, circles=rep(1, length(x$lon)), inches=0.05, add=TRUE) 
    node <- x[x$node == 1, c("lon", "lat")] 
    for (i in 2:nrow(x)) lines(gcIntermediate(node, x[i, c("lon", "lat")]), col="red", lwd=0.8) 
} 


lapply(L1, gc) 

任何人都可以幫助我!提前致謝。這是我的代碼...

回答

2

正如你在?jpeg閱讀,你可以使用一個文件名以「C整數格式」和jpeg將爲每個小區一個新的文件,如:

jpeg(filename="Rplot%03d.jpeg") 
plot(1:10) # will become Rplot001.jpeg 
plot(11:20) # will become Rplot002.jpeg 
dev.off() 

在你的情況下應該工作:

jpeg(filename="Rplot%03d.jpeg") 
lapply(L1, gc) 
dev.off() 
+0

非常感謝sgibb!有時我會閱讀一些查找示例的帖子,並忘記先閱讀?function()。結果我感到困惑......再次感謝您爲我節省了大量工作。 – ramiroaznar 2014-11-23 15:53:24

0

最簡單的方法是在每個循環迭代中構建不同的文件名,使用paste()代替filenamejpeg()

for (ii in 1:10) { 
    jpeg(paste(ii,".jpg",sep="")) 
    plot(rnorm(10),rnorm(10)) 
    dev.off() 
} 
相關問題