如何循环读取R中的一个接一个文件?

时间:2015-05-13 13:15:21

标签: r loops

我的文件系统命名,并且都位于同一文件夹中。所以我想利用并编写一个函数来逐个读取它们而不是为每个函数手动执行此操作。

名称存储在此文本文件中:

DF <- read.table(text="       site                column row
1          abs   1259 463
2         adm   1253 460
3        afrm   1258 463", header=T)

我想编写一个逐行执行的函数并执行此操作:

You can see for instance if we apply for the first row:

cor$siteabs所以:

   file1=read.table("C:\\Data\\abs.txt",sep = "\t")

cor$column1259

cor$row463

所以

 wf= read.table("C:\\Users\\measurement_ 1259_463.txt", sep =' ' , header =TRUE)

现在我使用file1wf .........

进行任何计算

然后转到第二行,依此类推。

1 个答案:

答案 0 :(得分:1)

使用您要阅读的文件名创建一个字符向量,并按照consolidating data frames in Rreading multiple csv files in R中的说明操作。

files <- data.frame(
    site = paste("C:\\Data\\", DF$site, ".txt", sep=""),
    measurement = paste("C:\\Users\\measurement_", DF$column, "_",
                        DF$row, ".txt", sep=""),
    stringsAsFactors = FALSE)

results <- Map(function(s, m){
    file1 <- read.table(s, sep="\t")
    wt <- read.table(m, sep=' ', header=TRUE)
    # Do stuff
    return(result)
}, files$site, files$measurement)

# Alternatively
results <- vector("list", nrow(files))
for(i in 1:nrow(files)){
    file1 <- read.table(files$site[i], sep="\t")
    wt <- read.table(files$measurment[i], sep=' ', header=TRUE)
    # Do stuff
    results[[i]] <- # result
}