2015-10-24 3 views
0

Я не очень опытный пользователь R. Мне нужно пройти через папку csv-файлов и применить функцию к каждому из них. Затем я хотел бы получить значение, которое я получаю для каждого из них, и поместить R в новый столбец с именем «stratindex», который будет находиться в одном новом файле csv.Зацикливание файлов в R и применение функции

Вот функция применяется к одному файлу

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

Это проще, если вы читаете файл в функции

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) 
+0

Где в этом коде я сказать ему, что папка взять файл список из? – abruh

+0

Я получил его, спасибо. Для всех, кто смотрит на это, вы можете использовать «choose.files()» вместо «list.files()», чтобы вручную выбрать их. – abruh