[R] Looking for simple line-splitting code

Mohammad Tanvir Ahamed m@@hr@ng@ @end|ng |rom y@hoo@com
Wed Feb 5 15:19:52 CET 2025


x <- c("abc\ndef", "", "ghi")

unlist(strsplit(gsub("^$", "\n", x), "\n"))

or 

x %>%
  gsub("^$", "\n", .) %>%
  strsplit("\n") %>%
  unlist()


Regards.............
Tanvir Ahamed 
Stockholm, Sweden     |  mashranga using yahoo.com 

On Wednesday, February 5, 2025 at 02:44:37 PM GMT+1, Duncan Murdoch <murdoch.duncan using gmail.com> wrote: 

If I have this object:

  x <- c("abc\ndef", "", "ghi")

and I write it to a file using `writeLines(x, "test.txt")`, my text 
editor sees a 5 line file:

  1: abc
  2: def
  3:
  4: ghi
  5:

which is what I'd expect:  the last line in the editor is empty.  If I 
use `readLines("test.txt")` on that file, I get the vector

  c("abc", "def", "", "ghi")

and all of that is fine.

What I'm looking for is simple code that modifies x to the `readLines()` 
output, without actually writing and reading it.

My first attempt doesn't work:

  unlist(strsplit(x, "\n"))

because it leaves out the blank line 3.  I can fix that with this ugly code:

  lines <- strsplit(x, "\n")
  lines[sapply(lines, length) == 0] <- list("")
  lines <- unlist(lines)

Surely there's a simpler way to do this?  I'd like to use just base 
functions, no other packages.

Duncan Murdoch

______________________________________________
R-help using 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.



More information about the R-help mailing list