新版 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" 也应该可以工作((或者发出弃用警告并暂时工作)
我的函数是:
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" 也应该可以工作((或者发出弃用警告并暂时工作)