功能评估和运行中的错误if if基于用户输入的特定条件循环

时间:2017-11-08 10:25:26

标签: r function

我正在尝试编写一个从命令提示符接受用户输入的函数。如果用户输入了“' Y'或者' y'或者'是'或者' 1'然后执行函数,否则它从if else循环退出:

myfunc <- function(){ 
  if( exists("result") ) { remove(result) }

  while(identical(flg_cont <- readline("Do you want to continue? :"), "y")){
   ## some code here ##
   if(!exists("result")){

    ## some other code here ##

  } else {

    ## some other code here ##

  }    
}
}

我想检查用户输入是否&#39; Y&#39;或者&#39; y&#39;或者是&#39;是&#39;或者&#39;是&#39;是或者&#39;是&#39;或者&#39; 1&#39;是的,这个函数应该运行为“空”&#39; (NULL)条目或0,函数将退出。

似乎if( exists("result") ) { remove(result) }未正确放置在循环中,因为多次迭代正在删除result向量。

1 个答案:

答案 0 :(得分:2)

如果您在某个函数中,则不需要删除结果,默认情况下,它将仅从函数环境中删除rm(pos=-1)。 阅读本文以了解什么是函数环境http://adv-r.had.co.nz/Environments.html#function-envs

您可以使用{/ 1}}语句,如

%in%

从您的代码中,还不清楚什么是flg_cont <- readline("Do you want to continue? :") if (flg_cont %in% c("y","Y",1)) { your statement there } 显然不是用户返回的内容。所以要理解你想做什么并不容易。

最后你应该向你的函数添加一个result语句,虽然没有必要,但它会让你的代码更清晰,它是最终返回的输入return()