I will also add that shell scripts that are in Docker containers will
often crash with confusing error messages if they have Windows line
endings.

On Sat, Jul 25, 2020 at 2:39 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
>
> On 25/07/2020 4:48 p.m., nos...@altfeld-im.de wrote:
> > Dear R developers,
> >
> > I am developing an R package which returns strings with new line codes.
> > I am not sure if I should use "\r\n" or "\n" in my returned strings on 
> > Windows platforms.
> >
> > What is the recommended best practice for package developers (and code in 
> > base R) for coding new lines in strings?
> >
> > And just out of curiosity: What is the reason (or history) for preferring 
> > "\n" in R even on Windows (see examples below)?
>
> Most Windows run-times (including the version of MSVCRT that R uses)
> convert \n to \r\n on text files, so you rarely need an explicit \r\n.
> That's the difference between type text and type binary on connections.
>
> Duncan Murdoch
>
>
> >
> > Best regards
> >
> > Jürgen
> >
> > PS: Examples from base R:
> >
> > R seems to use (almost) only "\n" for new lines internally - even on 
> > Windows platforms, eg.:
> >
> >      charToRaw(paste0("a", "\n", "b"))
> >      [1] 61 0a 62
> >
> >      # eol default is "\n"
> >      write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
> >                  eol = "\n", na = "NA", dec = ".", row.names = TRUE,
> >                  col.names = TRUE, qmethod = c("escape", "double"),
> >                  fileEncoding = "")
> >
> > On the other hand some external interfaces require Windows-style new lines 
> > ("\r\n"), eg. text file outputs seen ti care internally:
> >
> >      writeLines(text, con = stdout(), sep = "\n", useBytes = FALSE)
> >      # Excerpt from the documentation:
> >      #     Normally writeLines is used with a text-mode connection,
> >      #     and the default separator is converted to the normal separator
> >      #     for that platform (LF on Unix/Linux, CRLF on Windows).
> >
> >      # calls internally do_writelines():
> >      # 
> > https://github.com/wch/r-source/blob/8db7b85953127f364f52d201ec057911db4601e5/src/main/connections.c#L4023
> >      # But: Where is the conversion done (hidden in the call to Riconv()?)
> >
> > ______________________________________________
> > R-devel@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



-- 
Borasky Research Journal https://www.znmeb.mobi

Markovs of the world, unite! You have nothing to lose but your chains!

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to