Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Write output of R loop to file

Tags:

loops

r

Currently my R loop (see below) overwrites itself during each iteration. I want to output the result from each loop into a text file.

In more detail: R beginner here wondering how to include a line in my script so that the mean value calculating for each file is written to a text file. So that the script creates a new empty text file and then each time the script calculates the mean of column 4 in a file that value is output to a row in the text file which contains the name of the file in column1 and the mean value in column 2. Thanks for your help!

filename <- system("ls /dir/",intern=TRUE)

for(i in 1:length(filename)){

file <- read.table(filename[i],header=FALSE) ## if you have headers in your files ##
mean <- mean(as.numeric(file$V4))



}
like image 795
user964689 Avatar asked Jul 02 '12 11:07

user964689


1 Answers

To do it as the loop is running, in your loop add:

write.csv(data.frame(fname=filename[i],mean=mean),file="output.csv",append=TRUE)

However, this would mean a lot of file system overhead, and it would be quicker the produce the whole data frame in R and then write the file as a whole. So instead of your loop write:

means <- sapply(filename, function(x) mean(as.numeric(read.table(x,header=FALSE)$V4)))

And then write the file as a whole with:

write.csv(data.frame(fname=filename,mean=means),file="output.csv")
like image 93
James Avatar answered Oct 02 '22 12:10

James