循环浏览R中的文件并应用函数

时间:2015-10-24 18:49:17

标签: r csv

我不是一个非常有经验的R用户。我需要遍历一个csv文件的文件夹并为每个文件应用一个函数。然后我想获取每个值得到的值并将R转储到名为" stratindex"的新列中,该列将在一个新的csv文件中。

这里是应用于单个文件的功能

ctd=read.csv(file.choose(), header=T)

stratindex=function(x){
x=ctd$Density..sigma.t..kg.m.3..
(x[30]-x[1])/29
}

然后我可以用

吐出一个值
stratindex(Density..sigma.t..kg.m.3..)

我尝试格式化另一个在此主板上制作的文件循环。这个链接在这里:

Looping through files in R

我可以将它放在一起

out.file <- 'strat.csv'
for (i in list.files()) {
tmp.file <- read.table(i, header=TRUE)  
tmp.strat <- function(x)
x=tmp.file(Density..sigma.t..kg.m.3..)
(x[30]-x[1])/29
write(paste0(i, "," tmp.strat), out.file, append=TRUE)
}

我做错了什么/什么是更好的方法?

1 个答案:

答案 0 :(得分:2)

如果您在函数

中读取文件,则会更容易
stratindex <- function(file){
    ctd <- read.csv(file)
    x <- ctd$Density..sigma.t..kg.m.3..
    (x[30] - x[1]) / 29
}

然后将该函数应用于文件名向量

the.files <- list.files()
index <- sapply(the.files, stratindex)
output <- data.frame(File = the.files, StratIndex = index)
write.csv(output)