我正在尝试编写一个从命令提示符接受用户输入的函数。如果用户输入了“' 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
向量。
答案 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()