Можно ли использовать R в качестве секундомера для измерения времени, прошедшего между нажатиями клавиш? - PullRequest
0 голосов
/ 04 июня 2019

Я разрабатываю пакет R для измерения поведенческих реакций животных на источники запаха. Для этого мне нужно иметь возможность записывать количество времени (в секундах), которое человек проводит в пяти заранее определенных зонах, и сколько раз он входит в каждую зону.

Я изо всех сил пытаюсь найти любую информацию, которая предполагает, что R может использоваться, чтобы делать то, что мне нужно, хотя я уверен, что может!

По сути, я хочу назначить каждую зону для клавиши, которую я могу нажать, когда человек входит в зону, и для R можно измерить общее количество времени в каждой зоне и количество раз, которое они вводили. Я много раз искал на форуме, чтобы увидеть, было ли что-то подобное достигнуто ранее, и нашел две соответствующие темы:

  1. Время пользовательского ввода с первого нажатия клавиши в R

  2. Как разрешить множественные входы от пользователя, используя R?

Однако ни один из этих потоков не позволяет полностью измерить требуемые значения.

Любая помощь будет принята с благодарностью. Большое спасибо.

1 Ответ

0 голосов
/ 04 июня 2019

Итак, основываясь на двух очень полезных темах, которые вы связали, вы можете попробовать что-то вроде:

require(tictoc) #load required package
while(T){       #open infinite while loop
    tic()       #start timer
    input_state=readline("State input: ")  #allow for entry of state
    if(input_state %in% 1:5){    #check if it's acceptable 
        elapsed=toc()            #if it is then end timer and record data
        write.table(cbind(input_state,elapsed$toc-elapsed$tic),'results.txt',col.names=F,row.names=F,quote=F,append=T)
    }else if(input_state=='t'){  #if input is 't' 
        break                    #break out of while loop
    }else if(input_state <1 | input_state > 5 & input_state!='t'){#if input is not and accepted state AND is not 't'
     print('thats not an allowed state- please try another')
     } 
}

затем, чтобы узнать, сколько раз вы входили в каждое состояние:

data=read.table('results.txt',stringsAsFactors=F,header=F)
table(data[,1])
...