doc/Vector.md in red_amber-0.2.1 vs doc/Vector.md in red_amber-0.2.2

- old
+ new

@@ -5,27 +5,27 @@ ## Constructor ### Create from a column in a DataFrame ```ruby - df = RedAmber::DataFrame.new(x: [1, 2, 3]) + df = DataFrame.new(x: [1, 2, 3]) df[:x] # => #<RedAmber::Vector(:uint8, size=3):0x000000000000f4ec> [1, 2, 3] ``` ### New from an Array ```ruby - vector = RedAmber::Vector.new([1, 2, 3]) + vector = Vector.new([1, 2, 3]) # or - vector = RedAmber::Vector.new(1, 2, 3) + vector = Vector.new(1, 2, 3) # or - vector = RedAmber::Vector.new(1..3) + vector = Vector.new(1..3) # or - vector = RedAmber::Vector.new(Arrow::Array([1, 2, 3]) + vector = Vector.new(Arrow::Array.new([1, 2, 3]) # => #<RedAmber::Vector(:uint8, size=3):0x000000000000f514> [1, 2, 3] ``` @@ -59,11 +59,11 @@ ### `boolean?`, `numeric?`, `string?`, `temporal?` ### `type_class` -### `each` +### `each`, `map`, `collect` If block is not given, returns Enumerator. ### `n_nils`, `n_nans` @@ -76,11 +76,11 @@ ### `inspect(limit: 80)` - `limit` sets size limit to display a long array. ```ruby - vector = RedAmber::Vector.new((1..50).to_a) + vector = Vector.new((1..50).to_a) # => #<RedAmber::Vector(:uint8, size=50):0x000000000000f528> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, ... ] ``` @@ -93,39 +93,40 @@ - Vector of integer or float - Arrow::Arry of integer or float - Negative index is also OK like the Ruby's primitive Array. ```ruby -array = RedAmber::Vector.new(%w[A B C D E]) -indices = RedAmber::Vector.new([0.1, -0.5, -5.1]) +array = Vector.new(%w[A B C D E]) +indices = Vector.new([0.1, -0.5, -5.1]) array.take(indices) # or array[indices] # => #<RedAmber::Vector(:string, size=3):0x000000000000f820> ["A", "E", "A"] ``` -### `filter(booleans)`, `[](booleans)` +### `filter(booleans)`, `select(booleans)`, `[](booleans)` - Acceptable class for booleans: - An array of true, false, or nil - Boolean Vector - Arrow::BooleanArray ```ruby -array = RedAmber::Vector.new(%w[A B C D E]) +array = Vector.new(%w[A B C D E]) booleans = [true, false, nil, false, true] array.filter(booleans) # or array[booleans] # => #<RedAmber::Vector(:string, size=2):0x000000000000f21c> ["A", "E"] ``` +`filter` and `select` also accepts a block. ## Functions ### Unary aggregations: `vector.func => scalar` @@ -156,21 +157,21 @@ Options can be used as follows. See the [document of C++ function](https://arrow.apache.org/docs/cpp/compute.html) for detail. ```ruby -double = RedAmber::Vector.new([1, 0/0.0, -1/0.0, 1/0.0, nil, ""]) +double = Vector.new([1, 0/0.0, -1/0.0, 1/0.0, nil, ""]) #=> #<RedAmber::Vector(:double, size=6):0x000000000000f910> [1.0, NaN, -Infinity, Infinity, nil, 0.0] double.count #=> 5 double.count(mode: :only_valid) #=> 5, default double.count(mode: :only_null) #=> 1 double.count(mode: :all) #=> 6 -boolean = RedAmber::Vector.new([true, true, nil]) +boolean = Vector.new([true, true, nil]) #=> #<RedAmber::Vector(:boolean, size=3):0x000000000000f924> [true, true, nil] boolean.all #=> true @@ -213,11 +214,11 @@ - `:n-digits` The number of digits to show. - `round_mode` Specify rounding mode. ```ruby -double = RedAmber::Vector.new([15.15, 2.5, 3.5, -4.5, -5.5]) +double = Vector.new([15.15, 2.5, 3.5, -4.5, -5.5]) # => [15.15, 2.5, 3.5, -4.5, -5.5] double.round # => [15.0, 2.0, 4.0, -4.0, -6.0] double.round(mode: :half_to_even) # => Default. Same as double.round @@ -291,11 +292,11 @@ ```ruby array = [0.0/0, Float::NAN] array.tally #=> {NaN=>1, NaN=>1} - vector = RedAmber::Vector.new(array) + vector = Vector.new(array) vector.tally #=> {NaN=>2} vector.value_counts #=> {NaN=>2} ``` ### `index(element)` @@ -308,11 +309,11 @@ ### `sort_indexes`, `sort_indices`, `array_sort_indices` ## Coerce ```ruby -vector = RedAmber::Vector.new(1,2,3) +vector = Vector.new(1,2,3) # => #<RedAmber::Vector(:uint8, size=3):0x00000000000decc4> [1, 2, 3] # Vector's `#*` method @@ -338,16 +339,17 @@ ### `replace(specifier, replacer)` => vector - Accepts Scalar, Range of Integer, Vector, Array, Arrow::Array as a specifier - Accepts Scalar, Vector, Array and Arrow::Array as a replacer. - Boolean specifiers specify the position of replacer in true. + - If booleans.any is false, no replacement happen and return self. - Index specifiers specify the position of replacer in indices. - replacer specifies the values to be replaced. - The number of true in booleans must be equal to the length of replacer ```ruby -vector = RedAmber::Vector.new([1, 2, 3]) +vector = Vector.new([1, 2, 3]) booleans = [true, false, true] replacer = [4, 5] vector.replace(booleans, replacer) # => #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10> @@ -377,41 +379,31 @@ - Position of nil in booleans is replaced with nil. ```ruby booleans = [true, false, nil] replacer = -1 -vec.replace(booleans, replacer) +vector.replace(booleans, replacer) => #<RedAmber::Vector(:int8, size=3):0x00000000000304d0> [-1, 2, nil] ``` - replacer can have nil in it. ```ruby booleans = [true, false, true] replacer = [nil] -vec.replace(booleans, replacer) +vector.replace(booleans, replacer) => #<RedAmber::Vector(:int8, size=3):0x00000000000304d0> [nil, 2, nil] ``` -- If no replacer specified, it is same as to specify nil. - -```ruby -booleans = [true, false, true] -vec.replace(booleans) -=> -#<RedAmber::Vector(:int8, size=3):0x00000000000304d0> -[nil, 2, nil] -``` - - An example to replace 'NA' to nil. ```ruby -vector = RedAmber::Vector.new(['A', 'B', 'NA']) +vector = Vector.new(['A', 'B', 'NA']) vector.replace(vector == 'NA', nil) # => #<RedAmber::Vector(:string, size=3):0x000000000000f8ac> ["A", "B", nil] ``` @@ -419,11 +411,11 @@ - Specifier in indices. Specified indices are used 'as sorted'. Position in indices and replacer may not have correspondence. ```ruby -vector = RedAmber::Vector.new([1, 2, 3]) +vector = Vector.new([1, 2, 3]) indices = [2, 1] replacer = [4, 5] vector.replace(indices, replacer) # => #<RedAmber::Vector(:uint8, size=3):0x000000000000f244> @@ -435,11 +427,11 @@ Propagate the last valid observation forward (or backward). Or preserve nil if all previous values are nil or at the end. ```ruby -integer = RedAmber::Vector.new([0, 1, nil, 3, nil]) +integer = Vector.new([0, 1, nil, 3, nil]) integer.fill_nil_forward # => #<RedAmber::Vector(:uint8, size=5):0x000000000000f960> [0, 1, 1, 3, 3] @@ -457,11 +449,11 @@ `nil` values in `cond` will be promoted to the output. This example will normalize negative indices to positive ones. ```ruby -indices = RedAmber::Vector.new([1, -1, 3, -4]) +indices = Vector.new([1, -1, 3, -4]) array_size = 10 normalized_indices = (indices < 0).if_else(indices + array_size, indices) # => #<RedAmber::Vector(:int16, size=4):0x000000000000f85c> @@ -472,11 +464,11 @@ For each element in self, return true if it is found in given `values`, false otherwise. By default, nulls are matched against the value set. (This will be changed in SetLookupOptions: not impremented.) ```ruby -vector = RedAmber::Vector.new %W[A B C D] +vector = Vector.new %W[A B C D] values = ['A', 'C', 'X'] vector.is_in(values) # => #<RedAmber::Vector(:boolean, size=4):0x000000000000f2a8> @@ -484,11 +476,11 @@ ``` `values` are casted to the same Class of Vector. ```ruby -vector = RedAmber::Vector.new([1, 2, 255]) +vector = Vector.new([1, 2, 255]) vector.is_in(1, -1) # => #<RedAmber::Vector(:boolean, size=3):0x000000000000f320> [true, false, true] @@ -497,10 +489,10 @@ ### `shift(amount = 1, fill: nil)` Shift vector's values by specified `amount`. Shifted space is filled by value `fill`. ```ruby -vector = RedAmber::Vector.new([1, 2, 3, 4, 5]) +vector = Vector.new([1, 2, 3, 4, 5]) vector.shift # => #<RedAmber::Vector(:uint8, size=5):0x00000000000072d8> [nil, 1, 2, 3, 4]