【发布时间】:2019-05-28 01:26:54
【问题描述】:
数值向量中的元素在运行迭代每个元素的 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
为什么?
【问题讨论】:
-
您只是
printing 并没有更新数据集。您可能需要遍历序列并更新它。但是,这可以在没有循环的情况下轻松完成,df$Grad.Rate[df$Grad.Rate > 100] <- 100或df$Grad_Rate <- pmax(100, df$Grad.Rate)