R语言如何使用scan函数实现按n键继续执行代码
R语言基于scan实现仅按"n"才继续执行的交互方案
直接靠单次调用scan没法做输入校验,需要配合循环做输入判断,只有读到用户输入的"n"时才退出等待流程,具体代码如下:
# 等待用户输入n的交互段 cat("输入字母n后按回车继续执行: ") repeat { # 配置scan读取单条字符输入,关闭默认提示信息 input <- scan(nmax = 1, what = character(), quiet = TRUE) if (input == "n") break cat("输入无效,请输入n后按回车: ") } # 以下写后续需要执行的代码即可 print("校验通过,程序继续运行")
注意事项:
- 必须给scan指定
what = character(),否则默认读取数值类型,输入字母会直接抛错 - R终端默认是行缓冲机制,用户输入内容后必须按回车才能被R读取,无法实现不按回车、单按n键就触发继续的效果,这是终端输入的通用限制,不是scan函数的问题
- 如果需要兼容大写N的输入,把判断条件改成
input %in% c("n", "N")就行
如果要做无回车的单按键捕获,需要额外依赖第三方包做终端原始模式修改,不属于scan函数的能力范畴。
内容的提问来源于stack exchange,提问作者dlwhch
相关产品推荐
相关产品推荐

