for (x in 1:nrow(df_all1_new)) { df_all1_new$han_pei <-if(df_all1_new$tian_cut[x]=="零"){ 0 }else if(df_all1_new$tian_cut[x]=="一"){ 0.15*df_all1_new$站数[x] }else if(df_all1_new$tian_cut[x]=="二"){ 0.6*df_all1_new$站数[x] }else if(df_all1_new$tian_cut[x]=="三"){ 1.5*df_all1_new$站数[x] }else if(df_all1_new$tian_cut[x]=="四"){ 4*df_all1_new$站数[x] }else{ 13*df_all1_new$站数[x] } } 这段代码有什么问题
时间: 2024-04-08 19:33:46 浏览: 15
这段代码存在一个问题:循环中的赋值操作没有对数据框进行更新,因此最终结果不会保存在数据框中。
要解决这个问题,你可以使用索引(例如`df_all1_new$han_pei[x]`)对数据框进行赋值操作,以保存计算结果。修改后的代码如下:
```R
for (x in 1:nrow(df_all1_new)) {
if(df_all1_new$tian_cut[x]=="零"){
df_all1_new$han_pei[x] <- 0
} else if(df_all1_new$tian_cut[x]=="一"){
df_all1_new$han_pei[x] <- 0.15 * df_all1_new$站数[x]
} else if(df_all1_new$tian_cut[x]=="二"){
df_all1_new$han_pei[x] <- 0.6 * df_all1_new$站数[x]
} else if(df_all1_new$tian_cut[x]=="三"){
df_all1_new$han_pei[x] <- 1.5 * df_all1_new$站数[x]
} else if(df_all1_new$tian_cut[x]=="四"){
df_all1_new$han_pei[x] <- 4 * df_all1_new$站数[x]
} else {
df_all1_new$han_pei[x] <- 13 * df_all1_new$站数[x]
}
}
```
在修改后的代码中,使用索引`[x]`将计算结果赋值给`df_all1_new$han_pei`的相应行。这样,循环中的计算结果将被正确保存到数据框中。请确保变量名和条件判断的逻辑与你的数据框相匹配。希望这能帮到你!