首页 > 解决方案 > 我应该如何为包含 if 子句的整个列执行 for 循环(括号中也有错误,不知道为什么)

问题描述

在数据集“portugal_2016”中,我有一个包含足球结果“H”、“A”、“D”的列,我想保存在 2 个新列“home_points”和“visitor_points”中:

 for(i in 1:length(portugal_2016$X)) {
  if(portugal_2016$result == "H") {
    portugal_2016$home_points[i] <- 3
    portugal_2016$visitor_points[i] <- 0
    } else if (portugal_2016$result == "A") {
    portugal_2016$home_points[i] <- 0
    portugal_2016$visitor_points[i] <- 3
    } else (portugal_2016$result == "D") {
    portugal_2016$home_points[i] <- 1
    portugal_2016$visitor_points[i] <- 1
  }
}

我在所有括号中都遇到错误(不知道为什么)并且没有得到我想要的结果。

    Error: unexpected '{' in:
"    portugal_2016$visitor_points[i] <- 3
    } else (portugal_2016$result == "D") {"
>     portugal_2016$home_points[i] <- 1
>     portugal_2016$visitor_points[i] <- 1
>   }
Error: unexpected '}' in "  }"
> }
Error: unexpected '}' in "}"

标签: rloops

解决方案


试试下面的代码

for(i in 1:length(portugal_2016$X)) {
  if(portugal_2016$result[i] == "H") {
    portugal_2016$home_points[i] <- 3
    portugal_2016$visitor_points[i] <- 0
  } 
  if (portugal_2016$result[i] == "A") {
    portugal_2016$home_points[i] <- 0
    portugal_2016$visitor_points[i] <- 3
  } 
  if (portugal_2016$result[i] == "D") {
    portugal_2016$home_points[i] <- 1
    portugal_2016$visitor_points[i] <- 1
  }
}

推荐阅读