2016-06-01 5 views
-1

Мой скрипт читается в списке текстовых файлов из папки. Выполняется вычисление всех значений в нескольких столбцах в каждом текстовом файле. В конце я хочу записать полученный data.frame в новый текстовый файл в другом месте. Проблема заключается в том, что сценарий продолжает перезаписывать созданный ранее файл. Таким образом, я получаю только один файл (последний, который был прочитан). Но я не понимаю, что я делаю неправильно здесь. Имя выходного файла отличается каждый раз, поэтому в моей голове он должен создавать отдельные файлы.R - write.table перезаписывает файл

Сценарий выглядит следующим образом:

RAW <- "C:/path/tofiles" 
files <- list.files(RAW, full.names = TRUE) 
for(j in length(files)) { 
    if(file.exists(files[[j]])){ 
    data <- read.csv(files[[j]], skip = 0, header=FALSE) 
    data[9] <- do.call(cbind,lapply(data[9], function(x){(data[9]*0.01701)/0.00848})) 
    data[11] <- do.call(cbind,lapply(data[11], function(x){(data[11]*0.01834)/0.00848})) 
    data[13] <- do.call(cbind,lapply(data[13], function(x){(data[13]*0.00982)/0.00848})) 
    data[15] <- do.call(cbind,lapply(data[15], function(x){(data[15]*0.01011)/0.00848})) 
    OUT <- paste("C:/path/to/destination_folder",basename(files[[j]]),sep="") 
    write.table(data, OUT, sep=",", row.names = FALSE, col.names = FALSE, append = FALSE) 
    } 
} 
+0

Ознакомьтесь с содержанием 'OUT'. Я не думаю, что это правильно, потому что вы используете результат из 'list.files' с' full.names = TRUE'. – Roland

+0

'OUT' верен. Я использую 'basename' из' files [[j]] ' – BallerNacken

+1

Но ваш цикл' for' неверен. Он выполняет только одну итерацию. Это должно быть 'for (j в seq_along (файлы)). – Roland

ответ

1

Проблема в вашем for цикле. length(files) просто предоставляет 1 значение, а именно длину вашего files -vector, в то время как я думаю, вы хотите иметь последовательность с этой длиной.
Попробуйте seq_along или просто for(j in files).

+0

Thx! Это была проблема. Странно, хотя это и работало для меня в другом проекте. – BallerNacken

Смежные вопросы