x <- c("abc\ndef", "", "ghi") unlist(strsplit(gsub("^$", "\n", x), "\n"))
or x %>% gsub("^$", "\n", .) %>% strsplit("\n") %>% unlist() Regards............. Tanvir Ahamed Stockholm, Sweden | mashra...@yahoo.com On Wednesday, February 5, 2025 at 02:44:37 PM GMT+1, Duncan Murdoch <murdoch.dun...@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@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.