Hi Kimmo,

Thanks, scan() does indeed seem to work for just reading lines, at least with 
the following options:

    scan(what = character(), sep = "\n", na.strings = "", quiet = TRUE)

However, I can't say I'm confident I didn't forget some option for an edge 
case; and it's a bit of a mouthful.

Is it possible to somehow use unzip() with connections? My understanding is 
that it just creates files on disk in the given output directory. I'm using 
unz() because I don't want that.

Best,

Mikko

-----Original Message-----
From: R-help <r-help-boun...@r-project.org> On Behalf Of Kimmo Elo
Sent: Friday, 25 October 2024 15:21
To: r-help@r-project.org
Subject: Re: [R] readLines() and unz() and non-empty final line

[You don't often get email from kimmo....@uef.fi. Learn why this is important 
at https://aka.ms/LearnAboutSenderIdentification ]

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.


This e-mail transmission may contain confidential or legally privileged 
information that is intended only for the individual or entity named in the 
e-mail address. If you are not the intended recipient, you are hereby notified 
that any disclosure, copying, distribution, or reliance upon the contents of 
this e-mail is strictly prohibited. If you have received this e-mail 
transmission in error, please reply to the sender, so that they can arrange for 
proper delivery, and then please delete the message from your computer systems. 
Thank you.
______________________________________________
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.

Reply via email to