【发布时间】:2017-12-19 14:53:26
【问题描述】:
有一个完整的 R 脚本。但是,从 Rscript 执行它时,它不会停止接受用户输入。 用户输入是一些 readline 语句。提示输入的 cat 语句按预期工作。我错过了什么吗? 我在 macOS 上从终端执行“Rscript scriptfile.R”。
【问题讨论】:
-
您能提供您的代码示例吗?
有一个完整的 R 脚本。但是,从 Rscript 执行它时,它不会停止接受用户输入。 用户输入是一些 readline 语句。提示输入的 cat 语句按预期工作。我错过了什么吗? 我在 macOS 上从终端执行“Rscript scriptfile.R”。
【问题讨论】:
如 meenaparam 建议的帖子中所述,通过将 readline 更改为 readLines 设法使其工作。这种方法的缺点是脚本只能在批处理模式下工作,在 Rstudio 中运行它会使其挂起。很高兴知道捕获键盘输入的一般方法,即在交互式和批处理模式下都可以工作。
【讨论】:
您可以创建一个函数 typeline() 来读取输入行,然后将结果用于下一个命令。它会等待您在 Rstudio 或终端中运行代码的输入文本:
typeline <- function(msg="Enter text: ") {
if (interactive() ) {
txt <- readline(msg)
} else {
cat(msg);
txt <- readLines("stdin",n=1);
}
return(txt)
}
txt=typeline("your message: ")
print(txt)
【讨论】: