运行R script_Readline和Scan不会暂停用户输入

时间:2015-01-22 08:36:39

标签: r input rstudio

我看过其他与此问题类似的帖子,但他们没有帮助我。这可能只是我对R的无知。因此我决定注册并在堆叠溢出上发表我的第一篇文章。

我正在运行一个R脚本,并希望用户决定使用以下两个循环之一。决定用户输入的代码类似于下面的代码:

#Define the function
method.choice<-function() {
  Method.to.use<-readline("Please enter 'New' for new method and'Old' for old method: ")
    while(Method.to.use!="New" && Method.to.use!="Old"){ #Make sure selection is one of two inputs
      cat("You have not entered a valid input, try again", "\n")
      Method.to.use<-readline("Please enter 'New' for new method and 'Old' for old method: ")
      cat("You have selected", Method.to.use, "\n")
    }
  return(Method.to.use)
}

#Run the function
method.choice()

然后在下面我有两个可能的选择:

if(Method.to.use=="New") {
  for(i in 1:nrow(linelist)){...}
}

if(Method.to.use=="Old"){
  for(i in 1:nrow(linelist)){...}
}

我的问题是,我从其他帖子中读到的是,我是否使用&#34; readline&#34;,&#34; scan&#34;或者&#34;问&#34;,R不等我的输入。相反,R将使用以下行作为输入。

我发现R会暂停输入的唯一方法是,如果代码全部在同一行,或者它是逐行运行(而不是一次选择所有代码)。请参阅gtools中的示例,使用&#34; ask&#34;:

silly <- function()
{
 age <- ask("How old are you? ")
 age <- as.numeric(age)
 cat("In 10 years you will be", age+10, "years old!\n")
}

暂停:

silly(); paste("this is quite silly")

这不等于输入:

silly() 
paste("this is quite silly")

任何指导都将受到赞赏,以确保我仍然可以运行我的整个脚本,并让它在readline暂停,而不会继续。我正在使用R-studio,我检查了交互式== TRUE。

我找到的唯一其他解决方法是将整个脚本包装到一个主要功能中,这对我来说并不理想。这可能需要我使用&lt;&lt; - 来写入我的环境。

提前谢谢。

0 个答案:

没有答案