On 2025-06-25 2:59 a.m., Heuvel, E.G. van den (Guido) via R-help wrote:
Hi all,
I encountered some weird behaviour with readLines() recently, and I am
wondering if this might be a bug, or, if it is not, how to resolve it. The
issue is as follows:
If I have a text file where a line ends with just a carriage return (\r, CR)
while the next line is empty and ends in a carriage return / linefeed (\r\n, CR
LF), then the empty line is skipped when reading the file with readLines. The
following code contains a test case:
---
print(R.version)
# platform x86_64-w64-mingw32
# arch x86_64
# os mingw32
# crt ucrt
# system x86_64, mingw32
# status
# major 4
# minor 4.0
# year 2024
# month 04
# day 24
# svn rev 86474
# language R
# version.string R version 4.4.0 (2024-04-24 ucrt)
# nickname Puppy Cup
txt_original <- paste0("Line 1\r", "\r\n", "Line 3\r\n")
Doesn't that produce the same thing as "Line 1\r\r\nLine 3\r\n" when you
write it with writeBin? If I read the ?readLines page correctly, that
string contains 3 lines:
Line 1 CR
CR LF
Line 3 CR LF
On the other hand, when I use your construction or mine, I get 4 lines
read by my Mac:
readLines("test.txt")
[1] "Line 1" "" "" "Line 3"
I'd guess it is processing it as
Line 1 CR
CR
LF
Line 3 CR LF
So I think there are definitely bugs or bad docs here.
Duncan Murdoch
# Write txt_original as binary to avoid unwanted conversion of end of line
markers
writeBin(charToRaw(txt_original), "test.txt")
txt_actual <- readLines("test.txt")
print(txt_actual)
# [1] "Line 1" "Line 3"
---
I included the output of this script on my machine in the comments. I would expect txt_actual to be equal to
c("Line 1", "", "Line 3"), but the empty line is skipped.
Is this a bug? And if not, how should I read test.txt in such a way that the
empty 2nd line is left intact?
Best regards,
Guido van den Heuvel
Statistics Netherlands
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.