aboutsummaryrefslogtreecommitdiff
path: root/R/pkg/R/functions.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/pkg/R/functions.R')
-rw-r--r--R/pkg/R/functions.R19
1 files changed, 19 insertions, 0 deletions
diff --git a/R/pkg/R/functions.R b/R/pkg/R/functions.R
index 5dba0887d1..b5879bd9ad 100644
--- a/R/pkg/R/functions.R
+++ b/R/pkg/R/functions.R
@@ -594,3 +594,22 @@ setMethod("when", signature(condition = "Column", value = "ANY"),
jc <- callJStatic("org.apache.spark.sql.functions", "when", condition, value)
column(jc)
})
+
+#' ifelse
+#'
+#' Evaluates a list of conditions and returns `yes` if the conditions are satisfied.
+#' Otherwise `no` is returned for unmatched conditions.
+#'
+#' @rdname column
+setMethod("ifelse",
+ signature(test = "Column", yes = "ANY", no = "ANY"),
+ function(test, yes, no) {
+ test <- test@jc
+ yes <- ifelse(class(yes) == "Column", yes@jc, yes)
+ no <- ifelse(class(no) == "Column", no@jc, no)
+ jc <- callJMethod(callJStatic("org.apache.spark.sql.functions",
+ "when",
+ test, yes),
+ "otherwise", no)
+ column(jc)
+ })