* R * R中的非阻塞控制台读取

时间:2013-11-15 12:57:43

标签: r console command-line-interface nonblocking

我正在 R 中编写一个具有粗略CLI(命令行界面)的工具,该工具从套接字执行非阻塞读取(正在工作)。我希望通过以非阻塞方式从控制台读取单个字符(如果存在)来同时检查新命令。一个简化的例子

repeat{
    newCmdChar <- nonblockingReadConsole()
    if (newCmdChar == NULL) doStuffReadingNonblockingSocket()
    else switch(newCmdChar, 
        a = doThis(),
        b = doThat(),
        x = break)
}

各种实验以非阻塞方式失败了文件(“stdin”),以及scan(),readLines()等上的排列。这里描述了一种方法How do you read a single character from console in R (without RETURN)?但它需要通过一个开放的图形设备来完成我本来希望避免这种情况。

问题

  1. 有没有办法做nonblockingReadConsole()来获得单个 字符?如果是这样,怎么样?
  2. 更好地探索一些 R GUI包? (我 一个新手,对那些人一无所知)?如果有,建议?
  3. 谢谢:)

    /乔治

2 个答案:

答案 0 :(得分:0)

我担心答案是您可能无法以非阻塞方式从R GUI命令行获取输入。它违背了R的单线程特性。

如果您需要此类行为,请使用其他语言编写人工互动部分,并调用R进行计算。或者使用其中一个GUI工具包,如您链接的问题中所述。

答案 1 :(得分:0)

更新:我已经在上面引用的链接中实现了“带键盘回调的开放式grDevice”方法,并且它比预期更方便。干杯,/ geg