R 如何根据上次执行的迭代的值跳过循环迭代?
我在一个向量上循环,我想知道如何在上一次迭代的基础上“跳过”一次迭代 例如:第一次迭代将命中1,然后第二次迭代将命中另一个1,但是如果数字与前一个数字相同,我想跳过该次迭代 简单的例子: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
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]
}
indrle
提供了另一种方法。对于您的示例数据,它将执行与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