r - 以批处理模式执行 R 代码时的用户输入

标签 r user-interface user-input stdin gwidgets

我正在寻找一种在批处理模式下执行时在循环中获取用户输入的方法。
readLines()scan()仅在交互模式下对我有用,在批处理模式下,他们开始读取代码行作为用户输入,除非所有代码都被 {} 包围。 ,这很不方便。我需要一个简单的解决方案来获得 1 个整数值,我只需输入值并按 ENTER,所以

  • 输入字段(如果解决方案涉及 GUI)必须自动获得焦点和
  • ENTER 必须触发输入/提交结束。

  • 我找不到满足这两个条件的方法,例如ginput() from gWidgets 激活输入字段,但 ENTER 不会触发表单提交。

    最佳答案

    这是我如何解决自己的问题:

    require(gWidgets)
    options(guiToolkit="RGtk2")
    
    INPUT <- function(message) {
      CHOICE <- NA
      w <- gbasicdialog(title=message, handler = function(h,...) CHOICE <<- svalue(input))
      input <- gedit("", initial.msg="", cont=w, width=10)
      addHandlerChanged(input, handler=function (h, ...) {
        CHOICE <<- svalue(input)
        dispose(w)
      })
      visible(w, set=TRUE)
      return(CHOICE)
    }
    
    repeat{
      x=INPUT("Input an integer")
      if(!is.na(as.integer(x))) break
    }
    print(x)
    

    关于r - 以批处理模式执行 R 代码时的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16537749/

    相关文章:

    r - Shiny :在控制台中显示服务器和ui之间消息的选项设置是什么

    python - 如何从不同的类访问GUI类属性?

    c++ - 如果我在 xp 中开发 c++ win32 GUI,我在不同的 win 操作系统中运行时会有问题吗

    r - 如何指向R包中的目录?

    r - 将箭头放在 R 中线的中间

    RStudio 不起作用

    c++ - 从另一个应用程序窗口中的文本字段读取

    python - 用户输入到文本文件

    javascript - 如何从 HTML 中的用户输入中查找列表的平均数、最大数和最小数

    带有用户输入的 Python while 循环