R限制一个循环

R限制一个循环,r,R,如果j在I的某个范围内(例如3单位),我想将for循环限制为仅执行任务。 我尝试了以下代码: a <- c(1:100) b <- c(1:100) k1 <- length(a) k2 <- length(b) for (i in 1:k1){ for (j in 1:k2){ if (j>=i-3 & j<=i+3){ c<-c(a+b) } } } a如果我理解的话,问题是您正在循环使用100个j组

如果
j
在I的某个范围内(例如
3
单位),我想将for循环限制为仅执行任务。 我尝试了以下代码:

a <- c(1:100)
b <- c(1:100)

k1 <- length(a)
k2 <- length(b)

for (i in 1:k1){
  for (j in 1:k2){
    if (j>=i-3 & j<=i+3){
      c<-c(a+b)
    }
  }
}

a如果我理解的话,问题是您正在循环使用100个
j
组合,而实际上只有三到七个组合是有用的

如果这是正确的,您可以循环执行
j
的七次迭代,并过滤正值和在范围内的值:

width <- 3
for (i in seq_along(a)) {
  for (j in (i-width):(i+width)) {
    if (j > 0 && j <= length(b)) {
      # Do something
    }
  }
}

width 0&&j现在,要理解您想要什么有点困难。如果代码按照您希望的方式运行,您希望发生什么以及代码的结尾?现在,值
a+b
被重复分配给
c
。(另外,它通常被称为for循环,而不是循环。)感谢您的评论。你是对的,反复分配是错误的。马修·伦德伯格完美地回答了我的疑问。谢谢,这很好。你说得对,那是个错误,我已经改正了!