0

我目前正在阅读一系列文件,一次将相同的功能应用于它们,然后合并生成的数据帧,例如:

>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")

...ETC

我想知道我是否可以使用文件名列表 c("File1", "File2", "File2") 等并应用一个函数以更自动化的方式执行此操作?这将涉及使用目录路径中的列表值来读取文件,即

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

任何帮助表示赞赏

4

1 回答 1

0

Reduce这是使用and的一种方法Sys.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))
于 2013-05-15T17:57:02.327 回答