if语句参数长度为0

时间:2016-12-02 17:06:28

标签: r if-statement arguments zero

希望是一个简单的问题:

对于if语句行,我得到一个“参数长度为零”:

for (i in 1:(length(MixedDF))) {
      if (MixedDF[i,1] - MixedDF[i-1,1] == 1) {
      SwitchInd[i] = MixedDF$trial[i]
  }
}

其中MixedDF是一个大矩阵,而SwitchInd是一个零的矩阵,应该用if语句中标识的索引填充。 MixedDF$trialMixedDF[i,1]是矩阵中的第一列。此列包含从51开始到74的整数,其中有许多行具有相同的值。例如MixedDF$trial <- c(51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53.....)。我想确定试验改变的指数,所以51到52,52到53等等。更一般地说,我想理解为什么if语句不起作用,这似乎很简单。

2 个答案:

答案 0 :(得分:2)

这给出了值变化的索引

x <- c(51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53)
which(diff(x)!= 0) + 1 

#[1]  6 15

答案 1 :(得分:0)

确保没有NULL值。此外,您没有定义if语句失败的情况。添加“其他”条件。

if (MixedDF[i,1] - MixedDF[i-1,1] == 1) 
{
    SwitchInd[i] = MixedDF$trial[i]
}
else
{
    SwitchInd[i] = SOME VALUE
}

另一个问题是你不能从1开始(当我是1时,i-1是0)。