我想通过编写消息来计算按下键盘的不同键所需的时间间隔。按行和列处理R中的矩阵并迭代删除行
为了获取数据,我使用了一个在写入文本后生成.csv的程序。这个.csv有三列:第一列按键和释放键,第二列表示按键是否被按下(0)或释放(1),最后一列是每个事件的注册时间。
然后这个想法是计算每个键需要的时间间隔,因为它被按下直到它被释放。
在下面的额外简单的例子,我们可以看出,关键16777248
已经在时间5.0067901611328125e-06
被按下,并且在时间0.21875882148742676
释放,因此,对于这个关键的时间间隔为0.21875882148742676-5.0067901611328125e-06
。密钥72
的时间间隔应为0.1861410140991211-0.08675289154052734
。
16777248 0 5.0067901611328125e-06
72 0 0.08675289154052734
72 1 0.1861410140991211
16777248 1 0.21875882148742676
目前我已经在R中编写了一个代码,首先在.csv中读取表格。然后搜索第二列中的第一个,并取对应的键名称。接下来,它用0搜索前一个键。它计算时间间隔,将该值保存在一个向量中,然后从矩阵中删除这两行。以下,它应该重复,直到没有更多的行。
data.csv <- read.table("example.csv",header=F, sep=",", dec=".")
myTable<- data.csv
keySearched=0
timeInterval=c(rep(0,length(myTable[,1])))
L=(length(myTable[,1]))
for(i in 1:L){
if(myTable[i,2]==1){
keySearched <- myTable[i,1]
for(j in 1:(i-1)){
if(myTable[j,1]==keySearched){
timeInterval[j] <- (myTable[i,3]-myTable[j,3])
myTable <- myTable[ -c(j,i), ]
}
}
}
}
问题是,有时值myTable [x,y]是NA,因为相应的行已被删除。在每次迭代中,删除两行(使用按下的键和相应的释放键)。
在这一点上,我得到以下错误:
Error in if (myTable[j, 1] == keySearched) { :
missing value where TRUE/FALSE needed
我怎么能解决这个问题?
“对应的行已被删除”。这是否意味着您没有按下并释放相同数量的按键#?如果是这样,您应该决定如何处理丢失的数据。 –
当然,我有相同数量的按键和释放按键。 –