我正在使用命令返回参与者连续达到8个连续响应的点数。命令是:
test <- which( rle(goo)$values==1 & rle(goo)$lengths >= 8)
其中:
goo <- c(1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0)
如果参与者从未达到8个连续响应,我想将变量“test”设置为-1。就目前而言,当找不到一行中的8个连续响应时,该命令返回整数(0)。我试过写一个if命令,但似乎无法正确。
提前致谢,
威尔
答案 0 :(得分:14)
如果test为整数(0),则其长度为0.您还可以将其强制转换为符合!
length(test)
0
!(length(test)
TRUE # and would be FALSE for any vector with normal length
> !(length( c(1,2,3) ))
[1] FALSE
所以:
> if ( !length(test) ) {test<- -1}
> test
[1] -1
答案 1 :(得分:7)
将@kohske和@hadley的答案合并为一行
if(!any(test <- which(rle(goo)$values == 1 &
rle(goo)$lengths >= 8))) test<- -1