2013-05-15 16 views
0

我目前讀取一系列文件,在時間施加相同的功能將這些程序之一,然後合併所得到的數據幀例如,使用值的函數:R:施加在列表

>MyRows <- c("RowA", "RowB", "RowC") 
> 
>File1_DF <- read.delim("\\\\DirectoryToFiles\\File1_Folder\\File1.txt", stringsAsFactors=FALSE, check.names=FALSE) 
>File1_DF <- as.data.frame(t(File1_DF[MyRows,])) 
>File1_DF <- as.data.frame(t(File1_DF)) 
>mergeDF <- merge(mergeDF,File1_DF, by.x = "Row.names", by.y="row.names") 
> 
>File2_DF <- read.delim("\\\\DirectoryToFiles\\File2_Folder\\File2.txt", stringsAsFactors=FALSE, check.names=FALSE) 
>File2_DF <- as.data.frame(t(File2_DF[MyRows,])) 
>File2_DF <- as.data.frame(t(File2_DF)) 
>mergeDF <- merge(mergeDF,File2_DF, by.x = "Row.names", by.y="row.names") 

...等

我想知道我是否可以使用文件名c(「文件1」,「文件2」,「文件2」)等的列表,並應用一個功能,以更自動的方式做到這一點?這將涉及使用的目錄路徑列表值讀取文件即

>*MyFilesValue*_DF <- read.delim("\\\\DirectoryToFolders\\*MyFilesValue*_Folder\\*MyFilesValue*.txt", stringsAsFactors=FALSE, check.names=FALSE) 

任何幫助表示讚賞

+0

嘗試'list.files'和'sapply'來翻轉每個文件名。 –

回答

0

下面是使用ReduceSys.glob的一種方式。

fpaths <- Sys.glob(file.path('\\\\DirectoryToFiles\\File1_Folder\\', 'File*.txt')) 
dfs <- lapply(fpaths, read.delim, stringsAsFactors=FALSE, check.names=FALSE) 
dfs <- lapply(dfs, function(df) as.data.frame(t(as.data.frame(t(df[MyRows,]))))) 
merge.fun <- function(mergeDF, nextDF) { 
    merge(mergeDF, nextDF, by.x='Row.names', by.y='row.names') 
} 
result <- Reduce(merge.fun, c(mergeDF, dfs)) 
+0

你爲什麼使用'by.x ='Row.names',by.y ='row.names''? –