Re: readLines function with R >= 3.5.0

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Jennifer Lyon
Hi:

I have also just stumbled into this bug. Unfortunately, I can not
change the data my program receives from stdin. My code runs in a
larger system and stdin is sent to a Docker container running my R
code. The protocol is I read a line, readLines("stdin", n=1), do some
actions, send output on stdout, and wait for the next set of data.  I
don't have control over this protocol, so I can't use the ^D
workaround.

I am open for other workaround suggestions. The single line is
actually JSON and can be quite large. If there isn't something else
cleaner, I am going to try readChar() in a while loop looking for \n
but I'm guessing that would likely be too slow.  I am open to other
workaround solutions. For the moment I have reverted back to R 3.4.4.

Thanks for any suggestions.

Jen.


>> >>>>> Martin Maechler
>> >>>>>     on Mon, 28 May 2018 10:28:01 +0200 writes:
>>
>> >>>>> Ralf Stubner
>> >>>>>     on Fri, 25 May 2018 19:18:58 +0200 writes:
>>
>>     >> Dear all, I would like to draw you attention to this
>>     >> question on SO:
>>     >>
https://stackoverflow.com/questions/50372043/readlines-function-with-new-version-of-r

>>
>>
>>     >> Based on the OP's code I used the script
>>
>>     >> #######################################
>>     >> create_matrix <- function() {
>>     >> cat("Write the numbers of vertices: ")
>>     >> user_input <- readLines("stdin", n=1)
>>     >> user_input <- as.numeric(user_input)
>>     >> print(user_input)
>>     >> }
>>     >> create_matrix()
>>     >> #######################################
>>
>>     >> and called it with "R -f <filename>" from the command line.
>>
>>     >> With 'R version 3.4.4 (2018-03-15) -- "Someone to Lean On"' the
script
>>     >> prints the inputed number as expected. With both 'R version 3.5.0
>>     >> (2018-04-23) -- "Joy in Playing"' and 'R Under development
(unstable)
>>     >> (2018-05-19 r74746) -- "Unsuffered Consequences"' the script does
not

>>     >> continue after inputing a number.
>>
>>     > I can confirm.
>>     > It "works" if you additionally (the [Enter], i.e., EOL) you also
>>     > "send" an EOF -- in Unix alikes via  <Ctrl>-D
>>
>>     > The same happens if you use  'Rscript <filename>'
>>
>>     > I'm not the expert here, but am close to sure that we (R core)
>>     > did not intend this change, when fixing other somewhat subtle
>>     > bugs in Rscript / 'R -f'
>>
>>     > Martin Maechler
>>
>> The same behavior in regular R , no need for a script etc.
>>
>> > str(readLines("stdin", n=1))
>>
>> then in addition to the input  you need to "give" an EOF (Ctrl D) in R
>= 3.5.0
>>
>> Interestingly, everything works fine if you use  stdin() instead
>> of "stdin" :
>>
>> > rr <- readLines(stdin(), n=1)
>> foo
>> > rr
>> [1] "foo"
>> >
>> ----------
>>
>> So, for now use  stdin()  which is much clearer than the string
>> "stdin" anyway
>>
>> Martin Maechler

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Michael Lawrence-3
Hi Jen,

This was already resolved for R 3.5.1 by just disabling buffering on
terminal file connections like stdin.

Sounds like you might want to be running a web service or something
instead though.

Michael

On Tue, Jun 12, 2018 at 4:46 PM, Jennifer Lyon
<[hidden email]> wrote:

> Hi:
>
> I have also just stumbled into this bug. Unfortunately, I can not
> change the data my program receives from stdin. My code runs in a
> larger system and stdin is sent to a Docker container running my R
> code. The protocol is I read a line, readLines("stdin", n=1), do some
> actions, send output on stdout, and wait for the next set of data.  I
> don't have control over this protocol, so I can't use the ^D
> workaround.
>
> I am open for other workaround suggestions. The single line is
> actually JSON and can be quite large. If there isn't something else
> cleaner, I am going to try readChar() in a while loop looking for \n
> but I'm guessing that would likely be too slow.  I am open to other
> workaround solutions. For the moment I have reverted back to R 3.4.4.
>
> Thanks for any suggestions.
>
> Jen.
>
>
>>> >>>>> Martin Maechler
>>> >>>>>     on Mon, 28 May 2018 10:28:01 +0200 writes:
>>>
>>> >>>>> Ralf Stubner
>>> >>>>>     on Fri, 25 May 2018 19:18:58 +0200 writes:
>>>
>>>     >> Dear all, I would like to draw you attention to this
>>>     >> question on SO:
>>>     >>
> https://stackoverflow.com/questions/50372043/readlines-function-with-new-version-of-r
>>>
>>>
>>>     >> Based on the OP's code I used the script
>>>
>>>     >> #######################################
>>>     >> create_matrix <- function() {
>>>     >> cat("Write the numbers of vertices: ")
>>>     >> user_input <- readLines("stdin", n=1)
>>>     >> user_input <- as.numeric(user_input)
>>>     >> print(user_input)
>>>     >> }
>>>     >> create_matrix()
>>>     >> #######################################
>>>
>>>     >> and called it with "R -f <filename>" from the command line.
>>>
>>>     >> With 'R version 3.4.4 (2018-03-15) -- "Someone to Lean On"' the
> script
>>>     >> prints the inputed number as expected. With both 'R version 3.5.0
>>>     >> (2018-04-23) -- "Joy in Playing"' and 'R Under development
> (unstable)
>>>     >> (2018-05-19 r74746) -- "Unsuffered Consequences"' the script does
> not
>>>     >> continue after inputing a number.
>>>
>>>     > I can confirm.
>>>     > It "works" if you additionally (the [Enter], i.e., EOL) you also
>>>     > "send" an EOF -- in Unix alikes via  <Ctrl>-D
>>>
>>>     > The same happens if you use  'Rscript <filename>'
>>>
>>>     > I'm not the expert here, but am close to sure that we (R core)
>>>     > did not intend this change, when fixing other somewhat subtle
>>>     > bugs in Rscript / 'R -f'
>>>
>>>     > Martin Maechler
>>>
>>> The same behavior in regular R , no need for a script etc.
>>>
>>> > str(readLines("stdin", n=1))
>>>
>>> then in addition to the input  you need to "give" an EOF (Ctrl D) in R
>>= 3.5.0
>>>
>>> Interestingly, everything works fine if you use  stdin() instead
>>> of "stdin" :
>>>
>>> > rr <- readLines(stdin(), n=1)
>>> foo
>>> > rr
>>> [1] "foo"
>>> >
>>> ----------
>>>
>>> So, for now use  stdin()  which is much clearer than the string
>>> "stdin" anyway
>>>
>>> Martin Maechler
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Martin Maechler
>>>>> Michael Lawrence
>>>>>     on Tue, 12 Jun 2018 19:27:49 -0700 writes:

    > Hi Jen, This was already resolved for R 3.5.1 by just
    > disabling buffering on terminal file connections like stdin.

and before R 3.5.1 exists, *and*
as the change is also not yet available in R patched (!)
this means using a version of
"R-devel", e.g. for Windows available from
   https://cloud.r-project.org/bin/windows/base/rdevel.html

Martin

    > Sounds like you might want to be running a web service or
    > something instead though.

    > Michael

    > On Tue, Jun 12, 2018 at 4:46 PM, Jennifer Lyon
    > <[hidden email]> wrote:
    >> Hi:
    >>
    >> I have also just stumbled into this bug. Unfortunately, I
    >> can not change the data my program receives from
    >> stdin. My code runs in a larger system and stdin is sent
    >> to a Docker container running my R code. The protocol is
    >> I read a line, readLines("stdin", n=1), do some actions,
    >> send output on stdout, and wait for the next set of data.
    >> I don't have control over this protocol, so I can't use
    >> the ^D workaround.
    >>
    >> I am open for other workaround suggestions. The single
    >> line is actually JSON and can be quite large. If there
    >> isn't something else cleaner, I am going to try
    >> readChar() in a while loop looking for \n but I'm
    >> guessing that would likely be too slow.  I am open to
    >> other workaround solutions. For the moment I have
    >> reverted back to R 3.4.4.
    >>
    >> Thanks for any suggestions.
    >>
    >> Jen.
    >>
    >>
    >>>> >>>>> Martin Maechler >>>>> on Mon, 28 May 2018
    >>>> 10:28:01 +0200 writes:
    >>>>
    >>>> >>>>> Ralf Stubner >>>>> on Fri, 25 May 2018 19:18:58
    >>>> +0200 writes:
    >>>>
    >>>> >> Dear all, I would like to draw you attention to this
    >>>> >> question on SO:
    >>>> >>
    >> https://stackoverflow.com/questions/50372043/readlines-function-with-new-version-of-r
    >>>>
    >>>>
    >>>> >> Based on the OP's code I used the script
    >>>>
    >>>> >> #######################################
    >>>> >> create_matrix <- function() { >> cat("Write the
    >>>> numbers of vertices: ") >> user_input <-
    >>>> readLines("stdin", n=1) >> user_input <-
    >>>> as.numeric(user_input) >> print(user_input) >> } >>
    >>>> create_matrix()
    >>>> >> #######################################
    >>>>
    >>>> >> and called it with "R -f <filename>" from the
    >>>> command line.
    >>>>
    >>>> >> With 'R version 3.4.4 (2018-03-15) -- "Someone to
    >>>> Lean On"' the
    >> script
    >>>> >> prints the inputed number as expected. With both 'R
    >>>> version 3.5.0 >> (2018-04-23) -- "Joy in Playing"' and
    >>>> 'R Under development
    >> (unstable)
    >>>> >> (2018-05-19 r74746) -- "Unsuffered Consequences"'
    >>>> the script does
    >> not
    >>>> >> continue after inputing a number.
    >>>>
    >>>> > I can confirm.  > It "works" if you additionally (the
    >>>> [Enter], i.e., EOL) you also > "send" an EOF -- in Unix
    >>>> alikes via <Ctrl>-D
    >>>>
    >>>> > The same happens if you use 'Rscript <filename>'
    >>>>
    >>>> > I'm not the expert here, but am close to sure that we
    >>>> (R core) > did not intend this change, when fixing
    >>>> other somewhat subtle > bugs in Rscript / 'R -f'
    >>>>
    >>>> > Martin Maechler
    >>>>
    >>>> The same behavior in regular R , no need for a script
    >>>> etc.
    >>>>
    >>>> > str(readLines("stdin", n=1))
    >>>>
    >>>> then in addition to the input you need to "give" an EOF
    >>>> (Ctrl D) in R
    >>> = 3.5.0
    >>>>
    >>>> Interestingly, everything works fine if you use stdin()
    >>>> instead of "stdin" :
    >>>>
    >>>> > rr <- readLines(stdin(), n=1) foo > rr [1] "foo"
    >>>> >
    >>>> ----------
    >>>>
    >>>> So, for now use stdin() which is much clearer than the
    >>>> string "stdin" anyway
    >>>>
    >>>> Martin Maechler
    >>
    >> [[alternative HTML version deleted]]
    >>
    >> ______________________________________________
    >> [hidden email] mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel

    > ______________________________________________
    > [hidden email] mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Michael Lawrence-3
Are you sure it's not available in patched? It's definitely in the
source since 6/1.

Michael


On Wed, Jun 13, 2018 at 2:19 AM, Martin Maechler
<[hidden email]> wrote:

>>>>>> Michael Lawrence
>>>>>>     on Tue, 12 Jun 2018 19:27:49 -0700 writes:
>
>     > Hi Jen, This was already resolved for R 3.5.1 by just
>     > disabling buffering on terminal file connections like stdin.
>
> and before R 3.5.1 exists, *and*
> as the change is also not yet available in R patched (!)
> this means using a version of
> "R-devel", e.g. for Windows available from
>    https://cloud.r-project.org/bin/windows/base/rdevel.html
>
> Martin
>
>     > Sounds like you might want to be running a web service or
>     > something instead though.
>
>     > Michael
>
>     > On Tue, Jun 12, 2018 at 4:46 PM, Jennifer Lyon
>     > <[hidden email]> wrote:
>     >> Hi:
>     >>
>     >> I have also just stumbled into this bug. Unfortunately, I
>     >> can not change the data my program receives from
>     >> stdin. My code runs in a larger system and stdin is sent
>     >> to a Docker container running my R code. The protocol is
>     >> I read a line, readLines("stdin", n=1), do some actions,
>     >> send output on stdout, and wait for the next set of data.
>     >> I don't have control over this protocol, so I can't use
>     >> the ^D workaround.
>     >>
>     >> I am open for other workaround suggestions. The single
>     >> line is actually JSON and can be quite large. If there
>     >> isn't something else cleaner, I am going to try
>     >> readChar() in a while loop looking for \n but I'm
>     >> guessing that would likely be too slow.  I am open to
>     >> other workaround solutions. For the moment I have
>     >> reverted back to R 3.4.4.
>     >>
>     >> Thanks for any suggestions.
>     >>
>     >> Jen.
>     >>
>     >>
>     >>>> >>>>> Martin Maechler >>>>> on Mon, 28 May 2018
>     >>>> 10:28:01 +0200 writes:
>     >>>>
>     >>>> >>>>> Ralf Stubner >>>>> on Fri, 25 May 2018 19:18:58
>     >>>> +0200 writes:
>     >>>>
>     >>>> >> Dear all, I would like to draw you attention to this
>     >>>> >> question on SO:
>     >>>> >>
>     >> https://stackoverflow.com/questions/50372043/readlines-function-with-new-version-of-r
>     >>>>
>     >>>>
>     >>>> >> Based on the OP's code I used the script
>     >>>>
>     >>>> >> #######################################
>     >>>> >> create_matrix <- function() { >> cat("Write the
>     >>>> numbers of vertices: ") >> user_input <-
>     >>>> readLines("stdin", n=1) >> user_input <-
>     >>>> as.numeric(user_input) >> print(user_input) >> } >>
>     >>>> create_matrix()
>     >>>> >> #######################################
>     >>>>
>     >>>> >> and called it with "R -f <filename>" from the
>     >>>> command line.
>     >>>>
>     >>>> >> With 'R version 3.4.4 (2018-03-15) -- "Someone to
>     >>>> Lean On"' the
>     >> script
>     >>>> >> prints the inputed number as expected. With both 'R
>     >>>> version 3.5.0 >> (2018-04-23) -- "Joy in Playing"' and
>     >>>> 'R Under development
>     >> (unstable)
>     >>>> >> (2018-05-19 r74746) -- "Unsuffered Consequences"'
>     >>>> the script does
>     >> not
>     >>>> >> continue after inputing a number.
>     >>>>
>     >>>> > I can confirm.  > It "works" if you additionally (the
>     >>>> [Enter], i.e., EOL) you also > "send" an EOF -- in Unix
>     >>>> alikes via <Ctrl>-D
>     >>>>
>     >>>> > The same happens if you use 'Rscript <filename>'
>     >>>>
>     >>>> > I'm not the expert here, but am close to sure that we
>     >>>> (R core) > did not intend this change, when fixing
>     >>>> other somewhat subtle > bugs in Rscript / 'R -f'
>     >>>>
>     >>>> > Martin Maechler
>     >>>>
>     >>>> The same behavior in regular R , no need for a script
>     >>>> etc.
>     >>>>
>     >>>> > str(readLines("stdin", n=1))
>     >>>>
>     >>>> then in addition to the input you need to "give" an EOF
>     >>>> (Ctrl D) in R
>     >>> = 3.5.0
>     >>>>
>     >>>> Interestingly, everything works fine if you use stdin()
>     >>>> instead of "stdin" :
>     >>>>
>     >>>> > rr <- readLines(stdin(), n=1) foo > rr [1] "foo"
>     >>>> >
>     >>>> ----------
>     >>>>
>     >>>> So, for now use stdin() which is much clearer than the
>     >>>> string "stdin" anyway
>     >>>>
>     >>>> Martin Maechler
>     >>
>     >> [[alternative HTML version deleted]]
>     >>
>     >> ______________________________________________
>     >> [hidden email] mailing list
>     >> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>     > ______________________________________________
>     > [hidden email] mailing list
>     > https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Jennifer Lyon
Hi Michael:

I can confirm Martin's comment. I tested my software with r-devel (r74914)
and it works, while with r-patched (r74914) it does not work (it hangs, as
it did in R 3.5.0). I apologize for it taking so long for me to test this,
but is there any chance this fix could make into R 3.5.1?

Thanks.

Jen.

On Wed, Jun 13, 2018 at 6:24 AM, Michael Lawrence <[hidden email]
> wrote:

> Are you sure it's not available in patched? It's definitely in the
> source since 6/1.
>
> Michael
>
>
> On Wed, Jun 13, 2018 at 2:19 AM, Martin Maechler
> <[hidden email]> wrote:
> >>>>>> Michael Lawrence
> >>>>>>     on Tue, 12 Jun 2018 19:27:49 -0700 writes:
> >
> >     > Hi Jen, This was already resolved for R 3.5.1 by just
> >     > disabling buffering on terminal file connections like stdin.
> >
> > and before R 3.5.1 exists, *and*
> > as the change is also not yet available in R patched (!)
> > this means using a version of
> > "R-devel", e.g. for Windows available from
> >    https://cloud.r-project.org/bin/windows/base/rdevel.html
> >
> > Martin
> >
> >     > Sounds like you might want to be running a web service or
> >     > something instead though.
> >
> >     > Michael
> >
> >     > On Tue, Jun 12, 2018 at 4:46 PM, Jennifer Lyon
> >     > <[hidden email]> wrote:
> >     >> Hi:
> >     >>
> >     >> I have also just stumbled into this bug. Unfortunately, I
> >     >> can not change the data my program receives from
> >     >> stdin. My code runs in a larger system and stdin is sent
> >     >> to a Docker container running my R code. The protocol is
> >     >> I read a line, readLines("stdin", n=1), do some actions,
> >     >> send output on stdout, and wait for the next set of data.
> >     >> I don't have control over this protocol, so I can't use
> >     >> the ^D workaround.
> >     >>
> >     >> I am open for other workaround suggestions. The single
> >     >> line is actually JSON and can be quite large. If there
> >     >> isn't something else cleaner, I am going to try
> >     >> readChar() in a while loop looking for \n but I'm
> >     >> guessing that would likely be too slow.  I am open to
> >     >> other workaround solutions. For the moment I have
> >     >> reverted back to R 3.4.4.
> >     >>
> >     >> Thanks for any suggestions.
> >     >>
> >     >> Jen.
> >     >>
> >     >>
> >     >>>> >>>>> Martin Maechler >>>>> on Mon, 28 May 2018
> >     >>>> 10:28:01 +0200 writes:
> >     >>>>
> >     >>>> >>>>> Ralf Stubner >>>>> on Fri, 25 May 2018 19:18:58
> >     >>>> +0200 writes:
> >     >>>>
> >     >>>> >> Dear all, I would like to draw you attention to this
> >     >>>> >> question on SO:
> >     >>>> >>
> >     >> https://stackoverflow.com/questions/50372043/readlines-
> function-with-new-version-of-r
> >     >>>>
> >     >>>>
> >     >>>> >> Based on the OP's code I used the script
> >     >>>>
> >     >>>> >> #######################################
> >     >>>> >> create_matrix <- function() { >> cat("Write the
> >     >>>> numbers of vertices: ") >> user_input <-
> >     >>>> readLines("stdin", n=1) >> user_input <-
> >     >>>> as.numeric(user_input) >> print(user_input) >> } >>
> >     >>>> create_matrix()
> >     >>>> >> #######################################
> >     >>>>
> >     >>>> >> and called it with "R -f <filename>" from the
> >     >>>> command line.
> >     >>>>
> >     >>>> >> With 'R version 3.4.4 (2018-03-15) -- "Someone to
> >     >>>> Lean On"' the
> >     >> script
> >     >>>> >> prints the inputed number as expected. With both 'R
> >     >>>> version 3.5.0 >> (2018-04-23) -- "Joy in Playing"' and
> >     >>>> 'R Under development
> >     >> (unstable)
> >     >>>> >> (2018-05-19 r74746) -- "Unsuffered Consequences"'
> >     >>>> the script does
> >     >> not
> >     >>>> >> continue after inputing a number.
> >     >>>>
> >     >>>> > I can confirm.  > It "works" if you additionally (the
> >     >>>> [Enter], i.e., EOL) you also > "send" an EOF -- in Unix
> >     >>>> alikes via <Ctrl>-D
> >     >>>>
> >     >>>> > The same happens if you use 'Rscript <filename>'
> >     >>>>
> >     >>>> > I'm not the expert here, but am close to sure that we
> >     >>>> (R core) > did not intend this change, when fixing
> >     >>>> other somewhat subtle > bugs in Rscript / 'R -f'
> >     >>>>
> >     >>>> > Martin Maechler
> >     >>>>
> >     >>>> The same behavior in regular R , no need for a script
> >     >>>> etc.
> >     >>>>
> >     >>>> > str(readLines("stdin", n=1))
> >     >>>>
> >     >>>> then in addition to the input you need to "give" an EOF
> >     >>>> (Ctrl D) in R
> >     >>> = 3.5.0
> >     >>>>
> >     >>>> Interestingly, everything works fine if you use stdin()
> >     >>>> instead of "stdin" :
> >     >>>>
> >     >>>> > rr <- readLines(stdin(), n=1) foo > rr [1] "foo"
> >     >>>> >
> >     >>>> ----------
> >     >>>>
> >     >>>> So, for now use stdin() which is much clearer than the
> >     >>>> string "stdin" anyway
> >     >>>>
> >     >>>> Martin Maechler
> >     >>
> >     >> [[alternative HTML version deleted]]
> >     >>
> >     >> ______________________________________________
> >     >> [hidden email] mailing list
> >     >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >     > ______________________________________________
> >     > [hidden email] mailing list
> >     > https://stat.ethz.ch/mailman/listinfo/r-devel
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: readLines function with R >= 3.5.0

Michael Lawrence-3
Hi Jen,

Please provide a reproducible example, since the original stack
overflow example works in both trunk and patched.

Thanks,
Michael

On Tue, Jun 19, 2018 at 3:45 PM, Jennifer Lyon
<[hidden email]> wrote:

> Hi Michael:
>
> I can confirm Martin's comment. I tested my software with r-devel (r74914)
> and it works, while with r-patched (r74914) it does not work (it hangs, as
> it did in R 3.5.0). I apologize for it taking so long for me to test this,
> but is there any chance this fix could make into R 3.5.1?
>
> Thanks.
>
> Jen.
>
> On Wed, Jun 13, 2018 at 6:24 AM, Michael Lawrence
> <[hidden email]> wrote:
>>
>> Are you sure it's not available in patched? It's definitely in the
>> source since 6/1.
>>
>> Michael
>>
>>
>> On Wed, Jun 13, 2018 at 2:19 AM, Martin Maechler
>> <[hidden email]> wrote:
>> >>>>>> Michael Lawrence
>> >>>>>>     on Tue, 12 Jun 2018 19:27:49 -0700 writes:
>> >
>> >     > Hi Jen, This was already resolved for R 3.5.1 by just
>> >     > disabling buffering on terminal file connections like stdin.
>> >
>> > and before R 3.5.1 exists, *and*
>> > as the change is also not yet available in R patched (!)
>> > this means using a version of
>> > "R-devel", e.g. for Windows available from
>> >    https://cloud.r-project.org/bin/windows/base/rdevel.html
>> >
>> > Martin
>> >
>> >     > Sounds like you might want to be running a web service or
>> >     > something instead though.
>> >
>> >     > Michael
>> >
>> >     > On Tue, Jun 12, 2018 at 4:46 PM, Jennifer Lyon
>> >     > <[hidden email]> wrote:
>> >     >> Hi:
>> >     >>
>> >     >> I have also just stumbled into this bug. Unfortunately, I
>> >     >> can not change the data my program receives from
>> >     >> stdin. My code runs in a larger system and stdin is sent
>> >     >> to a Docker container running my R code. The protocol is
>> >     >> I read a line, readLines("stdin", n=1), do some actions,
>> >     >> send output on stdout, and wait for the next set of data.
>> >     >> I don't have control over this protocol, so I can't use
>> >     >> the ^D workaround.
>> >     >>
>> >     >> I am open for other workaround suggestions. The single
>> >     >> line is actually JSON and can be quite large. If there
>> >     >> isn't something else cleaner, I am going to try
>> >     >> readChar() in a while loop looking for \n but I'm
>> >     >> guessing that would likely be too slow.  I am open to
>> >     >> other workaround solutions. For the moment I have
>> >     >> reverted back to R 3.4.4.
>> >     >>
>> >     >> Thanks for any suggestions.
>> >     >>
>> >     >> Jen.
>> >     >>
>> >     >>
>> >     >>>> >>>>> Martin Maechler >>>>> on Mon, 28 May 2018
>> >     >>>> 10:28:01 +0200 writes:
>> >     >>>>
>> >     >>>> >>>>> Ralf Stubner >>>>> on Fri, 25 May 2018 19:18:58
>> >     >>>> +0200 writes:
>> >     >>>>
>> >     >>>> >> Dear all, I would like to draw you attention to this
>> >     >>>> >> question on SO:
>> >     >>>> >>
>> >     >>
>> > https://stackoverflow.com/questions/50372043/readlines-function-with-new-version-of-r
>> >     >>>>
>> >     >>>>
>> >     >>>> >> Based on the OP's code I used the script
>> >     >>>>
>> >     >>>> >> #######################################
>> >     >>>> >> create_matrix <- function() { >> cat("Write the
>> >     >>>> numbers of vertices: ") >> user_input <-
>> >     >>>> readLines("stdin", n=1) >> user_input <-
>> >     >>>> as.numeric(user_input) >> print(user_input) >> } >>
>> >     >>>> create_matrix()
>> >     >>>> >> #######################################
>> >     >>>>
>> >     >>>> >> and called it with "R -f <filename>" from the
>> >     >>>> command line.
>> >     >>>>
>> >     >>>> >> With 'R version 3.4.4 (2018-03-15) -- "Someone to
>> >     >>>> Lean On"' the
>> >     >> script
>> >     >>>> >> prints the inputed number as expected. With both 'R
>> >     >>>> version 3.5.0 >> (2018-04-23) -- "Joy in Playing"' and
>> >     >>>> 'R Under development
>> >     >> (unstable)
>> >     >>>> >> (2018-05-19 r74746) -- "Unsuffered Consequences"'
>> >     >>>> the script does
>> >     >> not
>> >     >>>> >> continue after inputing a number.
>> >     >>>>
>> >     >>>> > I can confirm.  > It "works" if you additionally (the
>> >     >>>> [Enter], i.e., EOL) you also > "send" an EOF -- in Unix
>> >     >>>> alikes via <Ctrl>-D
>> >     >>>>
>> >     >>>> > The same happens if you use 'Rscript <filename>'
>> >     >>>>
>> >     >>>> > I'm not the expert here, but am close to sure that we
>> >     >>>> (R core) > did not intend this change, when fixing
>> >     >>>> other somewhat subtle > bugs in Rscript / 'R -f'
>> >     >>>>
>> >     >>>> > Martin Maechler
>> >     >>>>
>> >     >>>> The same behavior in regular R , no need for a script
>> >     >>>> etc.
>> >     >>>>
>> >     >>>> > str(readLines("stdin", n=1))
>> >     >>>>
>> >     >>>> then in addition to the input you need to "give" an EOF
>> >     >>>> (Ctrl D) in R
>> >     >>> = 3.5.0
>> >     >>>>
>> >     >>>> Interestingly, everything works fine if you use stdin()
>> >     >>>> instead of "stdin" :
>> >     >>>>
>> >     >>>> > rr <- readLines(stdin(), n=1) foo > rr [1] "foo"
>> >     >>>> >
>> >     >>>> ----------
>> >     >>>>
>> >     >>>> So, for now use stdin() which is much clearer than the
>> >     >>>> string "stdin" anyway
>> >     >>>>
>> >     >>>> Martin Maechler
>> >     >>
>> >     >> [[alternative HTML version deleted]]
>> >     >>
>> >     >> ______________________________________________
>> >     >> [hidden email] mailing list
>> >     >> https://stat.ethz.ch/mailman/listinfo/r-devel
>> >
>> >     > ______________________________________________
>> >     > [hidden email] mailing list
>> >     > https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel