Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据上次执行的迭代的值跳过循环迭代?_R_Loops_For Loop_Iteration - Fatal编程技术网

R 如何根据上次执行的迭代的值跳过循环迭代?

R 如何根据上次执行的迭代的值跳过循环迭代?,r,loops,for-loop,iteration,R,Loops,For Loop,Iteration,我在一个向量上循环,我想知道如何在上一次迭代的基础上“跳过”一次迭代 例如:第一次迭代将命中1,然后第二次迭代将命中另一个1,但是如果数字与前一个数字相同,我想跳过该次迭代 简单的例子: vector <- c(1, 1, 1, 2, 3, 3, 4) for (i in vector) { print(i) } vector对向量的唯一值进行迭代怎么样 for(i在唯一(向量)中){ 印刷品(一) } #输出 # [1] 1 # [1] 2 # [1] 3 # [1] 4 除了uni

我在一个向量上循环,我想知道如何在上一次迭代的基础上“跳过”一次迭代

例如:第一次迭代将命中1,然后第二次迭代将命中另一个1,但是如果数字与前一个数字相同,我想跳过该次迭代

简单的例子:

vector <- c(1, 1, 1, 2, 3, 3, 4)

for (i in vector) {
print(i)
}

vector对向量的
唯一值进行迭代怎么样

for(i在唯一(向量)中){
印刷品(一)
}
#输出
# [1] 1
# [1] 2
# [1] 3
# [1] 4

除了
unique()
,这里还有另一个选项专门查看前面的值,可以更一般化:


j如果要显式查看上一个值

ind <- c(TRUE, vector[-length(vector)] != vector[-1])

print(vector[ind])

# or
for (i in which(ind)){
  vector[i]
 }

ind
rle
提供了另一种方法。对于您的示例数据,它将执行与
unique
相同的操作,但在某些其他情况下会有所不同(以更符合您的问题描述的方式):


vector这将是一个简单的答案,我需要它更健壮一些,因为我需要在特定迭代发生时发生某些事情。如果您希望搜索显式检查向量的先前值,请查看@tims解决方案。还要注意的是,即使使用这个大小为7的小向量,效率问题也很明显。
unique()
对眼睛来说肯定更容易,而且可能是我默认的。。。性能可能取决于它所查看的对象类型,有几种不同的方法,这太棒了!非常感谢。我一直在寻找这个强有力的答案。
vector <- c(1, 1, 1, 2, 3, 3, 4, 1, 1, 5)
for(i in rle(vector)$values){
    print(i)
}

#output:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 1
[1] 5