希望是一个简单的问题:
对于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$trial
或MixedDF[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语句不起作用,这似乎很简单。
答案 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)。