Rscript和用户提示

3

我有一个完全可用的R脚本。但是,当从Rscript执行它时,它不会停止接受用户输入。用户输入是一些readline语句。提示输入的cat语句按预期工作。我错过了什么吗?我在macOS终端上执行'Rscript scriptfile.R'。


2
这可能会有所帮助:https://dev59.com/QW865IYBdhLWcg3wM7u0 - meenaparam
你能提供一份你的代码样本吗? - Luís Telles
3个回答

3
您可以创建一个名为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)

1
成功地将 readline 更改为 readLines,如 meenaparam 建议的帖子中提到的那样,使其正常工作。但是,这种方法的缺点是脚本仅在批处理模式下运行,在 Rstudio 中运行会挂起。很好知道一种通用的捕获键盘输入的方法,即适用于交互和批处理模式。

1

使用此

cat("What's your name? ")
name <- readLines(file("stdin"),1)
cat("What's your age? ")
age <- readLines(file("stdin"),1)
print(name)
print(age)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接