【发布时间】:2020-06-14 01:12:54
【问题描述】:
我有一个看起来像这样的数据框:
df <- data.frame('Home.Team'=c("Omaha South", "Millard North", "Elkhorn","Elkhorn"),
'Winner'=c("Omaha South", "Millard North", "Elkhorn","Elkhorn"),
'Won By'=c(8,22,4,30),
'Away Class'=c("TRUE", "FALSE", "TRUE", "FALSE"))
我正在尝试使用来自dplyr 的条件if_else 创建一个新列/变量。这在过去对我有用,但由于某种原因,它现在给了我一个错误。下面是r代码和错误:
df$'Pre Score' <-
if_else(df$`Away Class`=="FALSE",
if_else(df$Home.Team==df$Winner, .8 + (df$`Won By`/100) -1, -1.2 - (df$`Won By`/100) -1),
if_else(df$Home.Team==df$Winner, .8 + (df$`Won By`/100), -1.2 - (df$`Won By`/100)))
错误:true 的长度必须为 4(condition 的长度)或 1,而不是 0
我已经阅读了与此相关的多个 SO 讨论(example、example、example),但无法将其转化为我的问题的解决方案。它似乎与代码的“如果为真”部分有关。显然它认为这是 1 的长度,而我希望它是 4 的长度,或者适用于所有行。尝试用 case_when 替换 if_else 但也未能成功。
【问题讨论】:
-
没有直接关系,但为什么你有 true & false 作为字符而不是布尔值?对于调试 ifelse 语句,尤其是像这样嵌套的语句,最好将它们一一分开,看看哪些运行或不运行。另外,您是如何尝试
case_when的?
标签: r if-statement dplyr