add header to file created by "write.csv"
Here are two possible approaches - the solution under EDIT using connections is more flexible and efficient.
Using write.table(...,append = T)
and cat
- Use
append=T
within a call towrite.table
, havingcat
the header there previously
wrapped in its own function....
write.table_with_header <- function(x, file, header, ...){
cat(header, '\n', file = file)
write.table(x, file, append = T, ...)
}
Note that append
is ignored in a write.csv
call, so you simply need to call
write.table_with_header(x,file,header,sep=',')
and that will result in a csv file.
EDIT
using connections
(Thanks to @flodel whose suggestion is this)
my.write <- function(x, file, header, f = write.csv, ...){
# create and open the file connection
datafile <- file(file, open = 'wt')
# close on exit
on.exit(close(datafile))
# if a header is defined, write it to the file (@CarlWitthoft's suggestion)
if(!missing(header)) writeLines(header,con=datafile)
# write the file using the defined function and required addition arguments
f(x, datafile,...)
}
Note that this version allows you to use write.csv
or write.table
or any function and uses a file connection which
(as @flodel points out in the comments)
will only open and close the file once, and automatically appends. Therefore it is more efficient!
Abe
Updated on June 17, 2022Comments
-
Abe almost 2 years
I am trying to automate some data exporting, and I would like to add a header to each file such as "please cite Bob and Jane 2008" ... or even a few lines of specific instructions depending on the context.
I have looked at the write.csv and write.table documentation, but do not see any such feature.
What is the easiest way to achieve this?