diff --git a/docs/sparkr.md b/docs/sparkr.md
index d7ffd9b3f122..a1a35a7757e5 100644
--- a/docs/sparkr.md
+++ b/docs/sparkr.md
@@ -394,75 +394,6 @@ head(result[order(result$max_eruption, decreasing = TRUE), ])
{% endhighlight %}
-#### Data type mapping between R and Spark
-
-| R | Spark |
-
- | byte |
- byte |
-
-
- | integer |
- integer |
-
-
- | float |
- float |
-
-
- | double |
- double |
-
-
- | numeric |
- double |
-
-
- | character |
- string |
-
-
- | string |
- string |
-
-
- | binary |
- binary |
-
-
- | raw |
- binary |
-
-
- | logical |
- boolean |
-
-
- | POSIXct |
- timestamp |
-
-
- | POSIXlt |
- timestamp |
-
-
- | Date |
- date |
-
-
- | array |
- array |
-
-
- | list |
- array |
-
-
- | env |
- map |
-
-
-
#### Run local R functions distributed using `spark.lapply`
##### spark.lapply
@@ -557,6 +488,75 @@ SparkR supports a subset of the available R formula operators for model fitting,
The following example shows how to save/load a MLlib model by SparkR.
{% include_example read_write r/ml/ml.R %}
+# Data type mapping between R and Spark
+
+| R | Spark |
+
+ | byte |
+ byte |
+
+
+ | integer |
+ integer |
+
+
+ | float |
+ float |
+
+
+ | double |
+ double |
+
+
+ | numeric |
+ double |
+
+
+ | character |
+ string |
+
+
+ | string |
+ string |
+
+
+ | binary |
+ binary |
+
+
+ | raw |
+ binary |
+
+
+ | logical |
+ boolean |
+
+
+ | POSIXct |
+ timestamp |
+
+
+ | POSIXlt |
+ timestamp |
+
+
+ | Date |
+ date |
+
+
+ | array |
+ array |
+
+
+ | list |
+ array |
+
+
+ | env |
+ map |
+
+
+
# R Function Name Conflicts
When loading and attaching a new package in R, it is possible to have a name [conflict](https://stat.ethz.ch/R-manual/R-devel/library/base/html/library.html), where a