元素不会更改。
我有一个数字矢量:
>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
为什么?
答案 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
}