2015-01-09 162 views
0

我,使用R創建不同的地塊,和我有存儲目錄​​中的文件的名稱的載體:基於文件名/ R中的條件

file_list <- c("loc1","loc2", ...) 

我也有一個列表,存儲的信息dataframes對於這些位置中的每一個,例如。

head(flist[[1]]) 

     x  y1  y2  y3  y4 
1 0.01000 0.1208 0.02161 0.00179 0.0002174 
1232 0.03333 0.2250 0.09075 0.01507 0.0029956 
45 0.05000 0.2868 0.14409 0.02998 0.0069587 
1708 0.06667 0.3429 0.19718 0.04795 0.
1842 0.07500 0.3690 0.22315 0.05776 0.0155406 
15 0.10000 0.4407 0.29743 0.08934 0.0265723 

(該文件名的指標有元素的的flist相應指數)

每個文件的信息可能會比其他一些文件,但不是所有的人。所以,我創建了4組:

g1 = "loc5" 
g2 = c("loc1","loc4","loc10") 
... 

我想繪製的 「LOC1」, 「LOC4」 X與Y 4,和一個陰謀 「loc10」,X與Y 3爲「loc2」和「loc9」在另一個陰謀等

但是,我似乎無法找到比通過文件列表for循環,並分配一些嵌入式'ifs'來測試每個個人文件名稱。

我想知道是否有例如自動創建四個空圖(或子圖)的方法,然後根據文件名(例如file_list [i])在相應的一個上調用plot命令。

或者任何其他有效的方法來做到這一點是值得歡迎的!

+0

的請求oneset PF繪製「loc1」,「loc4」和「loc10」的圖,以及「loc2」和「loc9」的下一組圖,然後...「等」,根本沒有意義。如果在那裏有一種我們應該直覺的模式,那麼我錯過了它。除非有一些明確的模式,否則請不要使用包含「等等」的問題描述。在R中循環列表是很容易的,所以一旦構造一個示例,就不需要嵌入「if」。 – 2015-01-09 20:25:05

+0

對不起,我感到困惑。不幸的是,沒有這種模式,因此我想找到一種根據位置名稱對圖進行分組的方式(即1個「loc5」圖,1個「loc1」,「loc4」和「loc10」圖)。我正在根據每個位置已知的定性信息探索文件中的信息。 – Neodyme 2015-01-12 10:34:07

回答

1

好的。首先,這裏是你的描述

# vector with file names, and list of data frames for each file 
file_list <- paste0('loc', 1:10) 
flist <- lapply(1:10, function(dummy) data.frame(x=runif(6), y3=runif(6), y4=runif(6))) 

# file groups to plot 
g1 <- "loc5" 
g2 <- c("loc1","loc4","loc10") 

符合以下一些虛擬的數據是我會怎麼解決這個問題

# first, add a column to each data frame with the file name 
for(i in seq_along(flist)) flist[[i]]$file <- file_list[i] 

# now a function that extracts data for a given group to a single data.frame 
# and plots x vs a given y variable 
library(ggplot2) 

plot_group <- function(g, yvar) { 
    plot_data <- do.call(rbind, flist[file_list %in% g]) 

    ggplot(plot_data, aes_string(x='x', y=yvar, color='file')) + 
    geom_point() + theme_classic() 
} 

plot_group(g2, 'y4')爲您提供:

enter image description here

+0

完全正是我所期待的!謝謝 – Neodyme 2015-01-12 10:29:56