使用for循环执行基本加法(尝试理解R如何解释for循环)

使用for循环执行基本加法(尝试理解R如何解释for循环),r,for-loop,R,For Loop,我有一个名为jvec的向量,它由#的1-9组成,如果向量中的每个数字大于3,我只想使用for循环将1添加到向量中的每个数字,并打印一次结果。我尝试了很多方法,但都失败了 jvec <- c(1:9) for (x in jvec) { if (x > 3) { x + 1 } } print(jvec) jvec 3){ x+1 } } 打印(jvec) (行不通) 这也行不通: jvec <- c(1:9) for (x in jvec[c(x)]) { if (j

我有一个名为jvec的向量,它由#的1-9组成,如果向量中的每个数字大于3,我只想使用for循环将1添加到向量中的每个数字,并打印一次结果。我尝试了很多方法,但都失败了

jvec <- c(1:9)
for (x in jvec) {
if (x > 3) {
x + 1
  }
}
print(jvec) 
jvec 3){
x+1
}
}
打印(jvec)
(行不通)

这也行不通:

jvec <- c(1:9)
for (x in jvec[c(x)]) {
if (jvec[c(x)] > 3) {
jvec[c(x)+1]
  print(jvec)
  }
}
jvec 3){
jvec[c(x)+1]
打印(jvec)
}
}

有人能解释一下为什么这两个选项都不起作用,以及如何正确操作吗?谢谢

您可以迭代
jvec
的索引,并仅在值大于3时更新
jvec

jvec <- 1:9

for (x in seq_along(jvec)) {
  if (jvec[x] > 3) {
    jvec[x] <- jvec[x] + 1
  }
}

print(jvec)
#[1]  1  2  3  5  6  7  8  9 10

这与其他编程语言中的情况相同-您必须实际将计算结果分配给一个变量(以保存它)

例如,这会起作用(但在R中也有更快的方法):

jvec 3){
jvec[i]
jvec <- 1:9
jvec + as.integer(jvec > 3)
#[1]  1  2  3  5  6  7  8  9 10
jvec <- c(1:9)
for (i in 1:length(jvec)) {
  if (jvec[i] > 3) {
    jvec[i] <- jvec[i] + 1
  }
}
print(jvec)