首页 > 解决方案 > 使用 if 语句在 R 中定义函数

问题描述

我想创建一个新列,DELAY_CAUSE. 此列需要包含NAifARR_DELAY为 0 或更低;"KNOWN"如果CARRIER_DELAY, WEATHER_DELAY,SECURITY_DELAYLATE_AIRCRAFT_DELAY的和至少等于ARRIVAL_DELAY,"UNKNOWN"否则。

我的代码是:

delay_reason <- function() {
  if ARR_DELAY <= 0 {
    return("NA")
  } else if(sum(CARRIER_DELAY, WEATHER_DELAY, SECURITY_DELAY, LATE_AIRCRAFT_DELAY) >= ARRIVAL_DELAY) {
    return("KNOWN")
  } else {
    return("UNKNOWN")
  }
}

df_flights$CAUSE_DELAY <- delay_reason

但是,我收到两个错误:

第一的:

Error: no function to return from, jumping to top level

第二:

Error: unexpected '}' in "  }"

如何修复我的功能有效?

先感谢您!

标签: rfunctionif-statement

解决方案


Use the ifelse function for a vectorized solution:

df$delay_reason <- ifelse(df$ARR_DELAY <= 0, "NA",
                       ifelse(df$CARRIER_DELAY + df$WEATHER_DELAY + df$SECURITY_DELAY +
                           df$LATE_AIRCRAFT_DELAY >= df$ARRIVAL_DELAY, "KNOWN", "UNKNOWN"))

推荐阅读