Repository: spark
Updated Branches:
  refs/heads/branch-1.6 40eadae16 -> 37c59f0ba


[SPARK-11542] [SPARKR] fix glm with long fomular

Because deparse() will break the long string into multiple lines, the 
deserialization will fail

Author: Davies Liu <dav...@databricks.com>

Closes #9510 from davies/fix_glm.

(cherry picked from commit 244010624200eddea6dfd1b2c89f40be45212e96)
Signed-off-by: Davies Liu <davies....@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/37c59f0b
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/37c59f0b
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/37c59f0b

Branch: refs/heads/branch-1.6
Commit: 37c59f0ba5c6f5effde2212ca2952058a2fb9ea1
Parents: 40eadae
Author: Davies Liu <dav...@databricks.com>
Authored: Thu Nov 5 16:34:10 2015 -0800
Committer: Davies Liu <davies....@gmail.com>
Committed: Thu Nov 5 16:34:32 2015 -0800

----------------------------------------------------------------------
 R/pkg/R/mllib.R               |  3 ++-
 R/pkg/inst/tests/test_mllib.R | 12 ++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/37c59f0b/R/pkg/R/mllib.R
----------------------------------------------------------------------
diff --git a/R/pkg/R/mllib.R b/R/pkg/R/mllib.R
index 60bfadb..b0d73dd 100644
--- a/R/pkg/R/mllib.R
+++ b/R/pkg/R/mllib.R
@@ -48,8 +48,9 @@ setMethod("glm", signature(formula = "formula", family = 
"ANY", data = "DataFram
           function(formula, family = c("gaussian", "binomial"), data, lambda = 
0, alpha = 0,
             standardize = TRUE, solver = "auto") {
             family <- match.arg(family)
+            formula <- paste(deparse(formula), collapse="")
             model <- callJStatic("org.apache.spark.ml.api.r.SparkRWrappers",
-                                 "fitRModelFormula", deparse(formula), 
data@sdf, family, lambda,
+                                 "fitRModelFormula", formula, data@sdf, 
family, lambda,
                                  alpha, standardize, solver)
             return(new("PipelineModel", model = model))
           })

http://git-wip-us.apache.org/repos/asf/spark/blob/37c59f0b/R/pkg/inst/tests/test_mllib.R
----------------------------------------------------------------------
diff --git a/R/pkg/inst/tests/test_mllib.R b/R/pkg/inst/tests/test_mllib.R
index 032cfef..4761e28 100644
--- a/R/pkg/inst/tests/test_mllib.R
+++ b/R/pkg/inst/tests/test_mllib.R
@@ -33,6 +33,18 @@ test_that("glm and predict", {
   expect_equal(typeof(take(select(prediction, "prediction"), 1)$prediction), 
"double")
 })
 
+test_that("glm should work with long formula", {
+  training <- createDataFrame(sqlContext, iris)
+  training$LongLongLongLongLongName <- training$Sepal_Width
+  training$VeryLongLongLongLonLongName <- training$Sepal_Length
+  training$AnotherLongLongLongLongName <- training$Species
+  model <- glm(LongLongLongLongLongName ~ VeryLongLongLongLonLongName + 
AnotherLongLongLongLongName,
+               data = training)
+  vals <- collect(select(predict(model, training), "prediction"))
+  rVals <- predict(glm(Sepal.Width ~ Sepal.Length + Species, data = iris), 
iris)
+  expect_true(all(abs(rVals - vals) < 1e-6), rVals - vals)
+})
+
 test_that("predictions match with native glm", {
   training <- createDataFrame(sqlContext, iris)
   model <- glm(Sepal_Width ~ Sepal_Length + Species, data = training)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to