if语句的参数长度为0
希望一个简单的问题:if语句的参数长度为0
我得到一个“说法是长度为零的”为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语句不起作用,这似乎很直接。
这使指数在那里将数值改变
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
谢谢当类是适当的,并且很简单时,它也可以工作:哪些(MixedDF $ trial [-1]!= MixedDF $ trial [-length(MixedDF $ trial)])但无法使for循环正常工作。 – bsils
请确保您没有NULL值。另外,您没有定义if语句失败的情况。添加'其他'条件。
if (MixedDF[i,1] - MixedDF[i-1,1] == 1)
{
SwitchInd[i] = MixedDF$trial[i]
}
else
{
SwitchInd[i] = SOME VALUE
}
另一个问题是你不能从1开始(当我是1,我-1是0)。
是从nrussel那里得到的,我刚刚改变了从2:长度(DF)开始 – bsils
当'i'是'1','MixedDF [I-1,1]'没有很好地形成。 – nrussell
[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610)会很好。这使得其他人更容易帮助你。 – Jaap
使用我得到一个“论据”,'哪个'是不合逻辑的,我已经把MixedDF $ trial设置为as.numeric,不知道是否有问题 – bsils