【发布时间】:2017-03-22 09:46:09
【问题描述】:
我想通过写消息来计算按下键盘不同键所需的时间间隔。
为了获取数据,我使用了一个在编写文本后生成 .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 中的表格。然后它在第二列中搜索第一个 1 并获取相应的键名。接下来,它使用 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
我该如何解决这个问题?
【问题讨论】:
-
"相应的行已被删除。"这是否意味着您没有相同数量的 key# 按下和释放?如果是这种情况,您应该决定如何处理丢失的数据。
-
当然,我按下和释放的键数相同。