[Rd] Write unix format files on windows and vice versa

Duncan Murdoch murdoch.duncan at gmail.com
Tue Apr 24 19:48:13 CEST 2012


On 24/04/2012 1:23 PM, Andrew Redd wrote:
> I go back and forth between windows and linux, and find myself running
> into problem with line endings.  Is there a way to control the line
> ending conversion when writing files, such as write and cat?  More
> explicitly I want to be able to write files with LF line endings
> rather than CRLF line ending on windows; and CRLF line endings instead
> of LF on linux, and I want to be able to control when the conversion
> is made and/or choose the line endings that I want.
>
> As far as I can tell the conversion is not optional and buried deep in
> compiled code. Is there a possible work around?

On Windows you will write CRLF if the file was opened as a text file, 
and LF only if it was opened as a binary file.  For example:

writeLines(letters, "crlf.txt")
con <- file("lf.txt", open="wb")
writeLines(letters, con)
close(con)

On Unix you can write CRLF by specifying that as the sep arg.  So the 
following will work on both systems:

con <- file("crlf.txt", open="wb")
writeLines(letters, con, sep="\r\n")
close(con)

(and the explicit connection isn't really necessary on Unix, but it is 
on Windows).

If you're not using the writeLines() function, it's probably a bit 
harder to set CRLF as a default on Unix than it is to set LF as a 
default on Windows.

Duncan Murdoch



More information about the R-devel mailing list