新版 R 的 readLines 函数

readLines function with new version of R

我的函数是:

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 并将报告结果:

  • 该示例使用 R version 3.5.1 (2018-07-02) -- "Feather Spray"
  • 效果很好
  • bug 已被标记为已修复。我可以断言 R Under development (unstable) (2018-06-02 r74838) -- "Unsuffered Consequences" 版本按预期工作。

  • 这个is considered a bug,但不清楚如何以及何时修复它。

  • A reasonable workaround: 除行尾外还发送文件尾(EOF, Ctrl-D)。

TLDR:使用 stdin()

如果您使用 stdin() 而不是 "stdin" .... 无论如何我们都会推荐它。

但可能,为了向后兼容 "stdin" 也应该可以工作((或者发出弃用警告并暂时工作)