【问题标题】:R run not source a file for interactive inputR运行不是为交互式输入提供文件
【发布时间】:2016-06-16 18:18:00
【问题描述】:

R 在运行文件和获取文件之间有细微的区别。源假设输入是有效的 R 代码。我有一个函数要求通过readline() 进行交互式输入,它会提示用户输入字符串。我已经在文件中记录了所需的输入,但无法弄清楚如何从文件中运行。

这是一个示例,一个小函数,它以交互方式请求文本并将其打印出来:

spacefun <- function() {
  text <- readline("Input text: ")
  print(text)
}

一个单独的文件test.R 调用该函数并提供文本。

spacefun()
Test Line

source()parse() 都在空白处抛出错误:

Error in source("~test.R", echo = TRUE) : 
  ~test.R:2:6: unexpected symbol
1: spacefun()
2: Test Line

想法?

【问题讨论】:

  • readline 仅用于交互使用,为什么需要它这样工作?
  • 我正在开发一个包,其中交互式输入是创建具有复杂的用户定义结构的特定对象的最佳方式。虽然我可以简单地手动运行它,但这显然不利于重现性。我想 readLine 的替代方案也可以使用,如果它可以处理空格。

标签: r rstudio


【解决方案1】:

Make readline wait for input in R 回答了

当你使用脚本模式时,你应该使用 readLines() 输入和 cat() 输出,这是一个奇怪的设计,我不知道为什么。

cat("a string please: ");
a <- readLines("stdin",n=1);
cat("You entered")
str(a);
cat( "\n" )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2015-10-10
    相关资源
    最近更新 更多