if命令测试整数(0)

时间:2011-05-15 01:08:43

标签: r

我正在使用命令返回参与者连续达到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命令,但似乎无法正确。

提前致谢,

威尔

2 个答案:

答案 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