From 5c71cd394ce806601dd735fade329f7dcbc7a7f5 Mon Sep 17 00:00:00 2001 From: Yanbo Liang Date: Wed, 9 Dec 2015 14:30:19 +0800 Subject: [PATCH 1/3] Fix subset error when only set select argument --- R/pkg/R/DataFrame.R | 6 +++++- R/pkg/inst/tests/testthat/test_sparkSQL.R | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/R/pkg/R/DataFrame.R b/R/pkg/R/DataFrame.R index 81b4e6b91d8a2..883e5cbdd5a78 100644 --- a/R/pkg/R/DataFrame.R +++ b/R/pkg/R/DataFrame.R @@ -1209,7 +1209,11 @@ setMethod("[", signature(x = "DataFrame", i = "Column"), #' } setMethod("subset", signature(x = "DataFrame"), function(x, subset, select, ...) { - x[subset, select, ...] + if (missing(subset)) { + x[, select, ...] + } else { + x[subset, select, ...] + } }) #' Select diff --git a/R/pkg/inst/tests/testthat/test_sparkSQL.R b/R/pkg/inst/tests/testthat/test_sparkSQL.R index 39fc94aea5fb1..21528d503bcd0 100644 --- a/R/pkg/inst/tests/testthat/test_sparkSQL.R +++ b/R/pkg/inst/tests/testthat/test_sparkSQL.R @@ -799,6 +799,10 @@ test_that("subsetting", { expect_equal(count(df6), 1) expect_equal(columns(df6), c("name", "age")) + df7 <- subset(df, select = "name") + expect_equal(count(df7), 3) + expect_equal(columns(df7), c("name")) + # Test base::subset is working expect_equal(nrow(subset(airquality, Temp > 80, select = c(Ozone, Temp))), 68) }) From 92b1bd739ff1821fe8b65c3776f6f25a833cde06 Mon Sep 17 00:00:00 2001 From: Yanbo Liang Date: Wed, 9 Dec 2015 15:31:47 +0800 Subject: [PATCH 2/3] add example code --- R/pkg/R/DataFrame.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/pkg/R/DataFrame.R b/R/pkg/R/DataFrame.R index 883e5cbdd5a78..a5394e90e4d4f 100644 --- a/R/pkg/R/DataFrame.R +++ b/R/pkg/R/DataFrame.R @@ -1206,6 +1206,7 @@ setMethod("[", signature(x = "DataFrame", i = "Column"), #' df[df$age %in% c(19, 30), 1:2] #' subset(df, df$age %in% c(19, 30), 1:2) #' subset(df, df$age %in% c(19), select = c(1,2)) +#' subset(df, select = c(1,2)) #' } setMethod("subset", signature(x = "DataFrame"), function(x, subset, select, ...) { From acc845724d4328fb36e6e36e01faca1b5398e533 Mon Sep 17 00:00:00 2001 From: Yanbo Liang Date: Wed, 9 Dec 2015 16:41:57 +0800 Subject: [PATCH 3/3] mark optional for subset argument --- R/pkg/R/DataFrame.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/pkg/R/DataFrame.R b/R/pkg/R/DataFrame.R index a5394e90e4d4f..f4c4a2585e291 100644 --- a/R/pkg/R/DataFrame.R +++ b/R/pkg/R/DataFrame.R @@ -1185,7 +1185,7 @@ setMethod("[", signature(x = "DataFrame", i = "Column"), #' #' Return subsets of DataFrame according to given conditions #' @param x A DataFrame -#' @param subset A logical expression to filter on rows +#' @param subset (Optional) A logical expression to filter on rows #' @param select expression for the single Column or a list of columns to select from the DataFrame #' @return A new DataFrame containing only the rows that meet the condition with selected columns #' @export @@ -1211,9 +1211,9 @@ setMethod("[", signature(x = "DataFrame", i = "Column"), setMethod("subset", signature(x = "DataFrame"), function(x, subset, select, ...) { if (missing(subset)) { - x[, select, ...] + x[, select, ...] } else { - x[subset, select, ...] + x[subset, select, ...] } })