从R中第一次击键开始的时间用户输入

从R中第一次击键开始的时间用户输入,r,user-input,R,User Input,查看用户从第一次击键开始在R中键入消息所需的时间 我可以使用诸如readline()或scan()之类的函数来获取用户输入,我还可以使用system.time()来测量代码运行所需的时间: > system.time(readline()) Test Message user system elapsed 0.98 0.53 19.55 然而,这些给了我总的运行时间。如果我在键入前等待15秒,这将反映在system.time()的输出中,而不仅仅是我写消息所花的

查看用户从第一次击键开始在R中键入消息所需的时间

我可以使用诸如
readline()
scan()
之类的函数来获取用户输入,我还可以使用
system.time()
来测量代码运行所需的时间:

> system.time(readline())
Test Message
   user  system elapsed 
   0.98    0.53   19.55
然而,这些给了我总的运行时间。如果我在键入前等待15秒,这将反映在
system.time()
的输出中,而不仅仅是我写消息所花的时间。(例如,我用来输入信息的19.55s=15s+~4.5s。)


希望在控制台中发生这种情况,但也愿意在必要时使用单独的窗口。

我最近使用两个软件包的组合解决了这个问题—
tictoc
keypress

keypress
中,您可以使用
keypress()
函数等待用户输入,然后输出按下的键-
keypress()
仅在命令行上的R中工作,它支持大多数键,但不支持所有键

要通过按键计时,您可以编写一个简单的
if
语句,从
tictoc
调用
tic()
函数

示例

当我发布这个问题时,我想知道一个人在按下“a”键后需要多长时间才能输入完整的小写字母

require(tictoc)
require(keypress)

for(i in 1:26){

  a=keypress()

  if(a==letters[1])  tic()
  if(a==letters[26]) toc()

  cat(paste(a))
}

abcdefghijklmnopqrstuvwxyz6.649 sec elapsed

按下“a”键时,秒表启动,按下“z”键时,秒表停止。

这是一个奇怪的问题,你需要它做什么(因为它不太清楚)?调用函数时使用
Sys.time
是否足够有用,可以在时间点零点工作并立即捕获时间段(使用
Sys.time
)?(你可以从结尾减去开始)我不认为有一个通用的方法可以做到这一点。我可以想到使用shiny或Gwidget的方法,但我认为在控制台上当前键入的内容实际发送之前,您无法查看这些内容。@TJGorrie这不是为了任何实用的东西(至少在我的情况下),只是为了好奇。我在这段代码中遇到了它,并注意到没有R的答案