为什么for循环不会更改数字矢量中的元素?

时间:2018-12-31 14:48:44

标签: r for-loop vector

运行迭代每个元素的for循环后,数字矢量中的

元素不会更改。

我有一个数字矢量:

>str(df$Grad.Rate)
num [1:777] 60 56 54 59 15 55 63 73 80 52 ...

我要更新任何元素> 100

> for (i in df$Grad.Rate){
+     if (i >100){
+         print(i)
+         i = 100
+         print(paste0('changed to ', i))
+     }
+ }
[1] 118
[1] "changed to 100"

运行for循环后,向量中仍大于100的元素

> any(df$Grad.Rate>100)
[1] TRUE

为什么?

2 个答案:

答案 0 :(得分:0)

您必须使用{p>而不是i = 100

df$Grad.Rate[i] <- 100

在您的循环中。您还可以选择无循环更改元素:

df$Grad.Rate[df$Grad.Rate > 100] <- 100

答案 1 :(得分:0)

我们可以做到没有任何循环

df$Grad.Rate[df$Grad.Rate > 100] <- 100

df$Grad_Rate <- pmin(100, df$Grad.Rate) 

for循环中,值不会更新。相反,我们可以遍历序列并进行更新

for (i in seq_along(df$Grad.Rate)){
 if (df$Grad.Rate[i] >100){

     df$Grad.Rate[i] <- 100

  }