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 ..." 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.
All these tests where done using docker images from the rocker project,
i.e. effectively using Debian Linux.
Is this an error in the script or in R?
Thanks
Ralf
--
Ralf Stubner
Senior Software Engineer / Trainer
daqana GmbH
Dortustra?e 48
14467 Potsdam
T: +49 331 23 61 93 11
F: +49 331 23 61 93 90
M: +49 162 20 91 196
Mail: ralf.stubner at daqana.com
Sitz: Potsdam
Register: AG Potsdam HRB 27966 P
Ust.-IdNr.: DE300072622
Gesch?ftsf?hrer: Prof. Dr. Dr. Karl-Kuno Kunze
>>>>> 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 > All these tests where done using docker images from the rocker project, > i.e. effectively using Debian Linux. > Is this an error in the script or in R? > Thanks > Ralf > -- > Ralf Stubner > Senior Software Engineer / Trainer > daqana GmbH > Dortustra?e 48 > 14467 Potsdam > T: +49 331 23 61 93 11 > F: +49 331 23 61 93 90 > M: +49 162 20 91 196 > Mail: ralf.stubner at daqana.com > Sitz: Potsdam > Register: AG Potsdam HRB 27966 P > Ust.-IdNr.: DE300072622 > Gesch?ftsf?hrer: Prof. Dr. Dr. Karl-Kuno Kunze > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>> 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