Hi, you could use "scan" instead, it seems to work fine also when wrapped around "unz".
Or, alternatively, you could use "unzip" instead of "unz". It works as expected, i.e. reads the last incomplete line and throws a warning about this. So it seems to me that "unz" creates a non-blocking connection, whereas "unzip" creates a blocking connection. But this is a pure guess based on how the behave :-) Best, Kimmo Bert Gunter kirjoitti 24.10.2024 klo 20.12: > But note: > >> zip("hello.zip", "hello.txt") > updating: hello.txt (stored 0%) >> readChar(unz("hello.zip","hello.txt"),100) > [1] "hello" > > I leave it to you and other wiser heads to figure out. > > Cheers, > Bert > > On Thu, Oct 24, 2024 at 8:57 AM Iris Simmons <ikwsi...@gmail.com> wrote: > >> Hi Mikko, >> >> >> I tried running a few different things, and it seems as though >> explicitly using `open()` and opening a blocking connection works. >> >> ```R >> cat("hello", file = "hello.txt") >> zip("hello.zip", "hello.txt") >> local({ >> conn <- unz("hello.zip", "hello.txt") >> on.exit(close(conn)) >> ## you can use "r" instead of "rt" >> ## >> ## 'blocking = TRUE' is the default, so remove if desired >> open(conn, "rb", blocking = TRUE) >> readLines(conn) >> }) >> ``` >> >> A blocking connection might be undesirable for you, in which case >> someone else might have a better solution. >> >> On Thu, Oct 24, 2024 at 10:58 AM Marttila Mikko via R-help >> <r-help@r-project.org> wrote: >>> >>> Dear list, >>> >>> I'm seeing a strange interaction with readLines() and unz() when reading >>> a file without an empty final line. The final line gets dropped silently: >>> >>>> cat("hello", file = "hello.txt") >>>> zip("hello.zip", "hello.txt") >>> adding: hello.txt (stored 0%) >>>> readLines(unz("hello.zip", "hello.txt")) >>> character(0) >>> >>> The documentation for readLines() says if the final line is incomplete >> for >>> "non-blocking text-mode connections" the line is "pushed back, silently" >>> but otherwise "accepted with a warning". >>> >>> My understanding is that the unz() here is blocking so the line should be >>> accepted. Is that incorrect? If so, how would I go about reading such >>> lines from a zip file? >>> >>> Best, >>> >>> Mikko >>> ______________________________________________ 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.