似乎无法找到此呼叫出了错的地方。我正在尝试创建一个新列来显示获得的幻想点,而“好” field_goal_result的kick_distance确定了这一点。
for (i in 1:nrow(kickers)) {
if (kickers$field_goal_result[i] == "good" & kickers$kick_distance[i] < 40) {
kickers$fantasy_points_added[i] <- 3
} else if (kickers$field_goal_result[i] == "good" & kickers$kick_distance[i] > 39 & kickers$kick_distance[i] < 50) {
kickers$fantasy_points_added[i] <- 4
} else if (kickers$field_goal_result[i] == "good" & kickers$kick_distance[i] > 49) {
kickers$fantasy_points_added[i] <- 5
} else {
kickers$fantasy_points_added[i] <- NA
}
}
Error in if (kickers$field_goal_result[i] == "good" & kickers$kick_distance[i] < :
missing value where TRUE/FALSE needed
答案 0 :(得分:3)
执行此操作的更好方法是使用嵌套的ifelse
:
kickers$fantasy_points_added <- ifelse(
kickers$field_goal_result == "good" & kickers$kick_distance < 40,
3,
ifelse(
kickers$field_goal_result == "good" & kickers$kick_distance > 39 & kickers$kick_distance < 50,
4,
ifelse(
kickers$field_goal_result == "good" & kickers$kick_distance > 49,
5,
NA
)
)
)
或使用dplyr
的{{1}}:
case_when