if 语句参数长度 0

if statement argument length 0

希望是一个简单的问题:

我得到 if 语句行的 "argument is of length zero":

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 语句不起作用,这看起来很简单。

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

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

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

这给出了值变化的索引

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