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