readLines函数与新版本的R

时间:2018-05-16 13:17:44

标签: r user-input rscript readlines

我的功能是:

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,在我输入数据后,程序不会继续执行。我直接从控制台调用脚本。

2 个答案:

答案 0 :(得分:6)

我使用各种码头图像的发现:

  • 该示例使用R version 3.4.4 (2018-03-15) -- "Someone to Lean On"中的rocker/r-ver:3.4.4正常工作。
  • 该示例使用R version 3.5.0 (2018-04-23) -- "Joy in Playing"中的rocker/r-ver:3.5.0所描述的挂起。
  • 该示例使用R Under development (unstable) (2018-05-19 r74746) -- "Unsuffered Consequences"中的rocker/drd所描述的挂起。

看起来版本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)。

答案 1 :(得分:2)

TLDR:使用stdin()

如果你使用stdin()而不是“stdin”......它可以正常工作....我们原本会推荐它。

但可能,对于后向兼容性“stdin”应该也可以起作用((或者发出弃用警告并立即起作用)