summaryrefslogtreecommitdiffstats
path: root/src/arrow/r/R/dictionary.R
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/arrow/r/R/dictionary.R69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/arrow/r/R/dictionary.R b/src/arrow/r/R/dictionary.R
new file mode 100644
index 000000000..b701768d6
--- /dev/null
+++ b/src/arrow/r/R/dictionary.R
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#' @include type.R
+
+#' @title class DictionaryType
+#'
+#' @usage NULL
+#' @format NULL
+#' @docType class
+#'
+#' @section Methods:
+#'
+#' TODO
+#'
+#' @rdname DictionaryType
+#' @name DictionaryType
+DictionaryType <- R6Class("DictionaryType",
+ inherit = FixedWidthType,
+ public = list(
+ ToString = function() {
+ prettier_dictionary_type(DataType__ToString(self))
+ }
+ ),
+ active = list(
+ index_type = function() DictionaryType__index_type(self),
+ value_type = function() DictionaryType__value_type(self),
+ name = function() DictionaryType__name(self),
+ ordered = function() DictionaryType__ordered(self)
+ )
+)
+DictionaryType$create <- function(index_type = int32(),
+ value_type = utf8(),
+ ordered = FALSE) {
+ assert_is(index_type, "DataType")
+ assert_is(value_type, "DataType")
+ DictionaryType__initialize(index_type, value_type, ordered)
+}
+
+#' Create a dictionary type
+#'
+#' @param index_type A DataType for the indices (default [int32()])
+#' @param value_type A DataType for the values (default [utf8()])
+#' @param ordered Is this an ordered dictionary (default `FALSE`)?
+#'
+#' @return A [DictionaryType]
+#' @seealso [Other Arrow data types][data-type]
+#' @export
+dictionary <- DictionaryType$create
+
+prettier_dictionary_type <- function(x) {
+ # Prettier format the "ordered" attribute
+ x <- sub(", ordered=0", "", x)
+ sub("ordered=1", "ordered", x)
+}