0

現在、一連のファイルを読み込んで、同じ関数を一度に 1 つずつ適用してから、結果のデータ フレームをマージしています。

>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("File1", "File2", "File2") などのリストを使用して、より自動化された機能でこれを行う関数を適用できるかどうかを知りたいですか? これには、ディレクトリ パスのリスト値を使用してファイルを読み込む必要があります。

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

どんな助けでも大歓迎

4

1 に答える 1

0

Reduceとを使用する 1 つの方法を次に示し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 に答える