我的函数是:
create_matrix <- function() {
cat("Write the numbers of vertices: ")
user_input <- readLines("stdin", n=1)
user_input <- as.numeric(user_input)
print(user_input)
}
在3.5.0版本中,当我输入数据后,程序没有继续执行。我是直接从控制台调用脚本。
我的函数是:
create_matrix <- function() {
cat("Write the numbers of vertices: ")
user_input <- readLines("stdin", n=1)
user_input <- as.numeric(user_input)
print(user_input)
}
在3.5.0版本中,当我输入数据后,程序没有继续执行。我是直接从控制台调用脚本。
使用不同的Docker镜像进行测试结果如下:
rocker/r-ver:3.4.4
中的R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
,示例正常工作。rocker/r-ver:3.5.0
中的R version 3.5.0 (2018-04-23) -- "Joy in Playing"
,示例出现了卡顿问题。rocker/drd
中的R Under development (unstable) (2018-05-19 r74746) -- "Unsuffered Consequences"
,示例出现了卡顿问题。看起来版本3.5.1中发布说明中提到的更改与此无关。我已将我的研究结果发送给r-devel,并将报告结果:
TLDR: 使用stdin()
如果使用stdin()
而不是"stdin",它可以正常工作...我们也建议您这样做。
但可能为了向后兼容性,“stdin”也应该工作((或者发出弃用警告并暂时工作)
stdin()
在交互式会话中可以工作,但在从控制台启动脚本时无法工作。您在 r-devel 上的第一个建议(发送 EOF / Ctrl-D)效果很好。 - Ralf Stubnerstdin()
在脚本中不可用,只能在交互式环境中使用。 - Martin Mächler
stdin
的错误修复,可能是你遇到了这个问题。 - Dirk Eddelbuettel