red_amber 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +56 -22
  3. data/.yardopts +2 -0
  4. data/CHANGELOG.md +178 -0
  5. data/Gemfile +1 -1
  6. data/LICENSE +1 -1
  7. data/README.md +29 -30
  8. data/benchmark/basic.yml +7 -7
  9. data/benchmark/combine.yml +3 -3
  10. data/benchmark/dataframe.yml +15 -9
  11. data/benchmark/group.yml +6 -6
  12. data/benchmark/reshape.yml +6 -6
  13. data/benchmark/vector.yml +6 -3
  14. data/doc/DataFrame.md +32 -12
  15. data/doc/DataFrame_Comparison.md +65 -0
  16. data/doc/SubFrames.md +11 -0
  17. data/doc/Vector.md +207 -1
  18. data/doc/yard-templates/default/fulldoc/html/css/common.css +6 -0
  19. data/lib/red_amber/data_frame.rb +454 -85
  20. data/lib/red_amber/data_frame_combinable.rb +609 -115
  21. data/lib/red_amber/data_frame_displayable.rb +313 -34
  22. data/lib/red_amber/data_frame_indexable.rb +122 -19
  23. data/lib/red_amber/data_frame_loadsave.rb +78 -10
  24. data/lib/red_amber/data_frame_reshaping.rb +184 -14
  25. data/lib/red_amber/data_frame_selectable.rb +623 -70
  26. data/lib/red_amber/data_frame_variable_operation.rb +452 -35
  27. data/lib/red_amber/group.rb +186 -22
  28. data/lib/red_amber/helper.rb +74 -14
  29. data/lib/red_amber/refinements.rb +26 -6
  30. data/lib/red_amber/subframes.rb +1101 -0
  31. data/lib/red_amber/vector.rb +362 -11
  32. data/lib/red_amber/vector_aggregation.rb +312 -0
  33. data/lib/red_amber/vector_binary_element_wise.rb +506 -0
  34. data/lib/red_amber/vector_selectable.rb +265 -23
  35. data/lib/red_amber/vector_unary_element_wise.rb +529 -0
  36. data/lib/red_amber/vector_updatable.rb +278 -34
  37. data/lib/red_amber/version.rb +2 -1
  38. data/lib/red_amber.rb +13 -1
  39. data/red_amber.gemspec +2 -2
  40. metadata +13 -8
  41. data/doc/image/dataframe/reshaping_DataFrames.png +0 -0
  42. data/lib/red_amber/vector_functions.rb +0 -242
@@ -4,17 +4,114 @@
4
4
  # reference: https://arrow.apache.org/docs/cpp/compute.html
5
5
 
6
6
  module RedAmber
7
- # mix-in for class Vector
7
+ # Mix-in for class Vector
8
8
  # Functions to make up some data (especially missing) for new data.
9
9
  module VectorUpdatable
10
10
  # Add properties to Arrow::Array and Arrow::ChunkedArray
11
11
  using RefineArrayLike
12
12
 
13
- # Replace data
14
- # @param specifier [Array, Vector, Arrow::Array] index or booleans.
15
- # @param replacer [Scalar, Array, Vector, Arrow::Array] new data to replace for.
16
- # @return [Vector] Replaced new Vector.
17
- # If specifier has no true, return self.
13
+ # Replace data in self by position specifier and replacer.
14
+ #
15
+ # - Scalar value may be broadcasted.
16
+ # - Returned value type may be automatically up-casted by replacer.
17
+ #
18
+ # @overload replace(booleans, replacer_by_scalar)
19
+ # Replace the value where true in boolean specifier to scalar replacer.
20
+ #
21
+ # @param booleans [Array, Vector, Arrow::Array]
22
+ # boolean position specifier to specify the position to be replaced by true.
23
+ # @param replacer_by_scalar [Scalar]
24
+ # new data to replace for.
25
+ # @return [Vector]
26
+ # a new replaced Vector.
27
+ # If specifier has no true, returns self.
28
+ # @example Replace with boolean specifier and scalar replacer
29
+ # Vector.new([1, 2, 3]).replace([true, false, true], 0)
30
+ #
31
+ # # =>
32
+ # #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
33
+ # [0, 2, 0]
34
+ #
35
+ # @example Type of result is up-casted by replacer.
36
+ # ector.new([1, 2, 3]).replace([true, false, true], -1.0)
37
+ #
38
+ # # =>
39
+ # #<RedAmber::Vector(:double, size=3):0x0000000000025d78>
40
+ # [-1.0, 2.0, -1.0]
41
+ #
42
+ # @example Position of nil in booleans is replaced with nil
43
+ # Vector.new([1, 2, 3]).replace([true, false, nil], -1)
44
+ #
45
+ # # =>
46
+ # #<RedAmber::Vector(:int8, size=3):0x00000000000304d0>
47
+ # [-1, 2, nil]
48
+ #
49
+ # @example Replace 'NA' to nil
50
+ # vector = Vector.new(['A', 'B', 'NA'])
51
+ # vector.replace(vector == 'NA', nil)
52
+ #
53
+ # # =>
54
+ # #<RedAmber::Vector(:string, size=3):0x000000000000f8ac>
55
+ # ["A", "B", nil]
56
+ #
57
+ # @overload replace(indices, replacer_by_scalar)
58
+ # Replace the value at the index specifier to scalar replacer.
59
+ #
60
+ # @param indices [Array, Vector, Arrow::Array]
61
+ # index specifier to specify the position to be replaced.
62
+ # @param replacer_by_scalar [Scalar]
63
+ # new data to replace for.
64
+ # @return [Vector]
65
+ # a new replaced Vector.
66
+ # If specifier is empty, returns self.
67
+ # @example Replace with index specifier and scalar replacer
68
+ # Vector.new([1, 2, 3]).replace([0, 2], 0)
69
+ #
70
+ # # =>
71
+ # #<RedAmber::Vector(:uint8, size=3):0x000000000000c15c>
72
+ # [0, 2, 0]
73
+ #
74
+ # @overload replace(booleans, replacer_array)
75
+ # Replace the value where true in boolean specifier to replacer array.
76
+ #
77
+ # @param booleans [Array, Vector, Arrow::Array]
78
+ # boolean position specifier to specify the position to be replaced by true.
79
+ # @param replacer_array [Vector, Array, Arrow::Array]
80
+ # new data to replace for.
81
+ # The number of true in booleans must be equal to the length of replacer array.
82
+ # @return [Vector]
83
+ # a new replaced Vector.
84
+ # If specifier has no true, returns self.
85
+ # @example Replace with boolean specifier and replacer array
86
+ # vector = Vector.new([1, 2, 3])
87
+ # booleans = [true, false, true]
88
+ # replacer = [4, 5]
89
+ # vector.replace(booleans, replacer)
90
+ #
91
+ # # =>
92
+ # #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
93
+ # [4, 2, 5]
94
+ #
95
+ # @overload replace(indices, replacer_array)
96
+ # Replace the value at the index specifier to replacer array.
97
+ #
98
+ # @param indices [Array, Vector, Arrow::Array]
99
+ # index specifier to specify the position to be replaced.
100
+ # @param replacer_array [Vector, Array, Arrow::Array]
101
+ # new data to replace for.
102
+ # The length of index specifier must be equal to the length of replacer array.
103
+ # @return [Vector]
104
+ # a new replaced Vector.
105
+ # If specifier is empty, returns self.
106
+ # @example Replace with index specifier and replacer array
107
+ # vector = Vector.new([1, 2, 3])
108
+ # indices = [0, 2]
109
+ # replacer = [4, 5]
110
+ # vector.replace(indices, replacer)
111
+ #
112
+ # # =>
113
+ # #<RedAmber::Vector(:uint8, size=3):0x000000000001ee10>
114
+ # [4, 2, 5]
18
115
  #
19
116
  def replace(specifier, replacer)
20
117
  vector = Vector.new(parse_args(Array(specifier), size))
@@ -37,7 +134,7 @@ module RedAmber
37
134
  in nil | [nil]
38
135
  return replace_to_nil(booleans.data)
39
136
  in Arrow::Array
40
- # nop
137
+ replacer
41
138
  in Vector
42
139
  replacer.data
43
140
  in Array
@@ -52,10 +149,59 @@ module RedAmber
52
149
  replace_with(booleans.data, replacer_array)
53
150
  end
54
151
 
55
- # (related functions)
56
- # fill_null_backward, fill_null_forward
57
-
58
- # [Ternary element-wise]: boolean_vector.func(if_true, else) => vector
152
+ # Choose values based on self.
153
+ #
154
+ # [Ternary element-wise function] Returns a Vector.
155
+ # - Self must be a boolean Vector.
156
+ # - `true_choice`, `false_choice` must be of the same type scalar / array / Vector.
157
+ # - `nil` values in self will be promoted to the output.
158
+ #
159
+ # @overload if_else(true_choise, false_choise)
160
+ # replace with a scalar.
161
+ #
162
+ # @param true_choice [scalar]
163
+ # a value to be replaced with true.
164
+ # @param false_choice [scalar]
165
+ # a value to be replaced with false.
166
+ # @return [Vector]
167
+ # replaced result.
168
+ # @example Replace with scalar choices
169
+ # Vector.new(true, true, false, nil, false).if_else(1, 2)
170
+ #
171
+ # # =>
172
+ # #<RedAmber::Vector(:uint8, size=5):0x000000000000c198>
173
+ # [1, 1, 2, nil, 2]
174
+ #
175
+ # @overload if_else(true_choise, false_choise)
176
+ # replace with a scalar.
177
+ #
178
+ # @param true_choice [Vector, Array, Arrow::Array]
179
+ # values to be replaced with true.
180
+ # The size of true_choice must be same as self.
181
+ # @param false_choice [Vector, Array, Arrow::Array]
182
+ # values to be replaced with false.
183
+ # The size of false_choice must be same as self.
184
+ # @return [Vector]
185
+ # replaced result.
186
+ # @example Replace with Array choices
187
+ # boolean_vector = Vector.new(true, true, false, nil, false)
188
+ # true_choise = Vector.new([1.1, 2.2, 3.3, 4.4, 5.5])
189
+ # false_choise = -true_choise
190
+ # boolean_vector.if_else(true_choise, false_choise)
191
+ #
192
+ # # =>
193
+ # #<RedAmber::Vector(:double, size=5):0x000000000000cd28>
194
+ # [1.1, 2.2, -3.3, nil, -5.5]
195
+ #
196
+ # @example Normalize negative indices to positive ones
197
+ # indices = Vector.new([1, -1, 3, -4])
198
+ # array_size = 10
199
+ # normalized_indices = (indices < 0).if_else(indices + array_size, indices)
200
+ #
201
+ # # =>
202
+ # #<RedAmber::Vector(:int16, size=4):0x000000000000f85c>
203
+ # [1, 9, 3, 6]
204
+ #
59
205
  def if_else(true_choice, false_choice)
60
206
  true_choice = true_choice.data if true_choice.is_a? Vector
61
207
  false_choice = false_choice.data if false_choice.is_a? Vector
@@ -65,21 +211,58 @@ module RedAmber
65
211
  Vector.create(datum.value)
66
212
  end
67
213
 
68
- # same behavior as Ruby's invert
214
+ # Another #invert which is same behavior as Ruby's invert.
215
+ #
69
216
  # ![true, false, nil] #=> [false, true, true]
217
+ # @return [Vector]
218
+ # follows Ruby's BasicObject#!'s behavior.
219
+ # @example
220
+ # vector = Vector.new([true, true, false, nil])
221
+ #
222
+ # # =>
223
+ # #<RedAmber::Vector(:boolean, size=4):0x000000000000fa8c>
224
+ # [true, true, false, nil]
225
+ #
226
+ # # nil is converted to nil by Vector#invert.
227
+ # vector.invert
228
+ # # or
229
+ # !vector
230
+ #
231
+ # #<RedAmber::Vector(:boolean, size=4):0x000000000000faa0>
232
+ # [false, false, true, nil]
233
+ #
234
+ # # On the other hand,
235
+ # # Vector#primitive_invert follows Ruby's BasicObject#!'s behavior.
236
+ # vector.primitive_invert
237
+ #
238
+ # # =>
239
+ # #<RedAmber::Vector(:boolean, size=4):0x000000000000fab4>
240
+ # [false, false, true, true]
241
+ #
70
242
  def primitive_invert
71
243
  raise VectorTypeError, "Not a boolean Vector: #{self}" unless boolean?
72
244
 
73
245
  is_nil.if_else(false, self).invert
74
246
  end
75
247
 
248
+ # Shift elements in self.
249
+ #
250
+ # @param amount [Integer]
251
+ # amount of shift. Positive value will shift right, negative will shift left.
252
+ # @param fill [Object]
253
+ # complementary element to fill the new seat.
254
+ # @return [Vector]
255
+ # shifted Vector.
256
+ #
76
257
  def shift(amount = 1, fill: nil)
77
- raise VectorArgumentError, 'Shift amount is too large' if amount.abs > size
258
+ raise VectorArgumentError, 'Shift amount is too large' if amount.abs >= size
78
259
 
79
260
  if amount.positive?
80
- replace(amount..-1, self[0...-amount]).replace(0...amount, fill)
261
+ filler = [fill] * amount
262
+ Vector.new(filler.concat(Array(self[0...-amount])))
81
263
  elsif amount.negative?
82
- replace(0...amount, self[-amount..]).replace(amount..-1, fill)
264
+ filler = [fill] * -amount
265
+ Vector.new(Array(self[-amount...]).concat(filler))
83
266
  else # amount == 0
84
267
  self
85
268
  end
@@ -87,13 +270,18 @@ module RedAmber
87
270
 
88
271
  # Split string Vector and returns Array of columns.
89
272
  #
90
- # @param sep [nil, String, Regexp] separater.
91
- # If separator is nil (or no argeument given), the column will be splitted by
92
- # Arrow's split function using any ASCII whitespace.
93
- # Otherwise sep will passed to String#split.
94
- # @param limit [Integer] maximum number to limit separation. Passed to String#split.
95
- # @return [Array<Vector>] an Array of Vectors.
96
- # @note nil will separated as nil's at same row. ex) `nil => [nil, nil]`
273
+ # @param sep [nil, String, Regexp]
274
+ # separator.
275
+ # If separator is nil (or no argeument given),
276
+ # the column will be splitted by Arrow's split function
277
+ # using any ASCII whitespace.
278
+ # Otherwise, sep will passed to String#split.
279
+ # @param limit [Integer]
280
+ # maximum number to limit separation. Passed to String#split.
281
+ # @return [Array<Vector>]
282
+ # an Array of Vectors.
283
+ # @note nil will separated as nil's at same row.
284
+ # ex) `nil => [nil, nil]`
97
285
  #
98
286
  def split_to_columns(sep = nil, limit = 0)
99
287
  l = split(sep, limit)
@@ -102,20 +290,25 @@ module RedAmber
102
290
 
103
291
  # Split string Vector and flatten into rows.
104
292
  #
105
- # @param sep [nil, String, Regexp] separater.
106
- # If separator is nil (or no argeument given), the column will be splitted by
107
- # Arrow's split function using any ASCII whitespace.
108
- # Otherwise sep will passed to String#split.
109
- # @param limit [Integer] maximum number to limit separation. Passed to String#split.
110
- # @return [Vector] a flatten Vector.
111
- # @note nil will separated as nil's at same row. ex) `nil => [nil, nil]`
293
+ # @param sep [nil, String, Regexp]
294
+ # separater.
295
+ # If separator is nil (or no argeument given),
296
+ # the column will be splitted by Arrow's split function
297
+ # using any ASCII whitespace.
298
+ # Otherwise, sep will passed to String#split.
299
+ # @param limit [Integer]
300
+ # maximum number to limit separation. Passed to String#split.
301
+ # @return [Vector]
302
+ # a flatten Vector.
303
+ # @note nil will separated as nil's at same row.
304
+ # ex) `nil => [nil, nil]`
112
305
  #
113
306
  def split_to_rows(sep = nil, limit = 0)
114
307
  l = split(sep, limit)
115
308
  l.list_flatten
116
309
  end
117
310
 
118
- # return element size Array for list Vector.
311
+ # Return element size Array for list Vector.
119
312
  #
120
313
  # @api private
121
314
  #
@@ -179,8 +372,10 @@ module RedAmber
179
372
  #
180
373
  # @param other [String, Vector]
181
374
  # merger from right. It will be broadcasted if it is a scalar String.
182
- # @param sep [String] separator.
183
- # @return [Vector] merged Vector
375
+ # @param sep [String]
376
+ # separator.
377
+ # @return [Vector]
378
+ # merged Vector
184
379
  #
185
380
  def merge(other, sep: ' ')
186
381
  if empty? || !string?
@@ -207,6 +402,53 @@ module RedAmber
207
402
  Vector.create(datum.value)
208
403
  end
209
404
 
405
+ # Concatenate other array-like to self.
406
+ #
407
+ # @param other [Vector, Array, Arrow::Array, Arrow::ChunkedArray]
408
+ # other array-like to concatenate.
409
+ # @return [Vector]
410
+ # concatenated Vector.
411
+ # @example Concatenate to string
412
+ # string_vector
413
+ #
414
+ # # =>
415
+ # #<RedAmber::Vector(:string, size=2):0x00000000000037b4>
416
+ # ["A", "B"]
417
+ #
418
+ # string_vector.concatenate([1, 2])
419
+ #
420
+ # # =>
421
+ # #<RedAmber::Vector(:string, size=4):0x0000000000003818>
422
+ # ["A", "B", "1", "2"]
423
+ #
424
+ # @example Concatenate to integer
425
+ # integer_vector
426
+ #
427
+ # # =>
428
+ # #<RedAmber::Vector(:uint8, size=2):0x000000000000382c>
429
+ # [1, 2]
430
+ #
431
+ # integer_vector.concatenate(["A", "B"])
432
+ # # =>
433
+ # #<RedAmber::Vector(:uint8, size=4):0x0000000000003840>
434
+ # [1, 2, 65, 66]
435
+ #
436
+ # @since 0.4.0
437
+ #
438
+ def concatenate(other)
439
+ concatenated_array =
440
+ case other
441
+ when Vector
442
+ data + other.data
443
+ when Arrow::ChunkedArray
444
+ data + other.pack
445
+ else
446
+ data + other
447
+ end
448
+ Vector.create(concatenated_array)
449
+ end
450
+ alias_method :concat, :concatenate
451
+
210
452
  private
211
453
 
212
454
  # Replace elements selected with a boolean mask
@@ -222,7 +464,8 @@ module RedAmber
222
464
  # - `replacer.size` must be equal to `mask.count(true)`.
223
465
  # - Types of self and replacer must be same
224
466
  #
225
- # @return [Vector] Replaced vector.
467
+ # @return [Vector]
468
+ # replaced vector.
226
469
  # Type of returned Vector is upcasted if needed.
227
470
  #
228
471
  def replace_with(boolean_mask, replacer)
@@ -241,7 +484,8 @@ module RedAmber
241
484
  # Boolean mask which indicates the position to be replaced.
242
485
  # - Position with true will be replaced by nil
243
486
  # - Position with nil will remain as nil.
244
- # @return [Vector] Replaced vector.
487
+ # @return [Vector]
488
+ # replaced vector.
245
489
  #
246
490
  def replace_to_nil(boolean_mask)
247
491
  nil_array = data.class.new([nil] * size) # Casted nil Array
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RedAmber
4
- VERSION = '0.3.0'
4
+ # Library version
5
+ VERSION = '0.4.1'
5
6
  end
data/lib/red_amber.rb CHANGED
@@ -14,20 +14,32 @@ require_relative 'red_amber/data_frame_selectable'
14
14
  require_relative 'red_amber/data_frame_variable_operation'
15
15
  require_relative 'red_amber/data_frame'
16
16
  require_relative 'red_amber/group'
17
- require_relative 'red_amber/vector_functions'
17
+ require_relative 'red_amber/subframes'
18
+ require_relative 'red_amber/vector_aggregation'
19
+ require_relative 'red_amber/vector_binary_element_wise'
20
+ require_relative 'red_amber/vector_unary_element_wise'
18
21
  require_relative 'red_amber/vector_updatable'
19
22
  require_relative 'red_amber/vector_selectable'
20
23
  require_relative 'red_amber/vector'
21
24
  require_relative 'red_amber/version'
22
25
 
23
26
  module RedAmber
27
+ # Generic error
24
28
  class Error < StandardError; end
25
29
 
30
+ # Argument error in DataFrame
26
31
  class DataFrameArgumentError < ArgumentError; end
32
+ # Data type error in DataFrame
27
33
  class DataFrameTypeError < TypeError; end
28
34
 
35
+ # Argument error in Vector
29
36
  class VectorArgumentError < ArgumentError; end
37
+ # Data type error in DataFrame
30
38
  class VectorTypeError < TypeError; end
31
39
 
40
+ # Argument error in Group
32
41
  class GroupArgumentError < ArgumentError; end
42
+
43
+ # Argument error in SubFrames
44
+ class SubFramesArgumentError < ArgumentError; end
33
45
  end
data/red_amber.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ['heronshoes877@gmail.com']
10
10
 
11
11
  spec.summary = 'Simple dataframe library for Ruby'
12
- spec.description = 'RedAmber is a simple dataframe library' \
12
+ spec.description = 'RedAmber is a simple dataframe library ' \
13
13
  'inspired by Rover-df and powered by Red Arrow.'
14
14
  spec.homepage = 'https://github.com/heronshoes/red_amber'
15
15
  spec.license = 'MIT'
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_dependency 'red-arrow', '~> 10.0.0'
34
+ spec.add_dependency 'red-arrow', '~> 11.0.0'
35
35
 
36
36
  # Development dependency has gone to the Gemfile (rubygems/bundler#7237)
37
37
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: red_amber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hirokazu SUZUKI (heronshoes)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-17 00:00:00.000000000 Z
11
+ date: 2023-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: red-arrow
@@ -16,15 +16,15 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 10.0.0
19
+ version: 11.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 10.0.0
27
- description: RedAmber is a simple dataframe libraryinspired by Rover-df and powered
26
+ version: 11.0.0
27
+ description: RedAmber is a simple dataframe library inspired by Rover-df and powered
28
28
  by Red Arrow.
29
29
  email:
30
30
  - heronshoes877@gmail.com
@@ -54,6 +54,8 @@ files:
54
54
  - benchmark/vector.yml
55
55
  - doc/CODE_OF_CONDUCT.md
56
56
  - doc/DataFrame.md
57
+ - doc/DataFrame_Comparison.md
58
+ - doc/SubFrames.md
57
59
  - doc/Vector.md
58
60
  - doc/image/arrow_table_new.png
59
61
  - doc/image/basic_verbs.png
@@ -66,7 +68,6 @@ files:
66
68
  - doc/image/dataframe/remove.png
67
69
  - doc/image/dataframe/rename.png
68
70
  - doc/image/dataframe/rename_operation.png
69
- - doc/image/dataframe/reshaping_DataFrames.png
70
71
  - doc/image/dataframe/set_and_bind.png
71
72
  - doc/image/dataframe/slice.png
72
73
  - doc/image/dataframe/slice_operation.png
@@ -85,6 +86,7 @@ files:
85
86
  - doc/image/vector/unary_element_wise.png
86
87
  - doc/tdr.md
87
88
  - doc/tdr_ja.md
89
+ - doc/yard-templates/default/fulldoc/html/css/common.css
88
90
  - lib/red-amber.rb
89
91
  - lib/red_amber.rb
90
92
  - lib/red_amber/data_frame.rb
@@ -98,9 +100,12 @@ files:
98
100
  - lib/red_amber/group.rb
99
101
  - lib/red_amber/helper.rb
100
102
  - lib/red_amber/refinements.rb
103
+ - lib/red_amber/subframes.rb
101
104
  - lib/red_amber/vector.rb
102
- - lib/red_amber/vector_functions.rb
105
+ - lib/red_amber/vector_aggregation.rb
106
+ - lib/red_amber/vector_binary_element_wise.rb
103
107
  - lib/red_amber/vector_selectable.rb
108
+ - lib/red_amber/vector_unary_element_wise.rb
104
109
  - lib/red_amber/vector_updatable.rb
105
110
  - lib/red_amber/version.rb
106
111
  - red_amber.gemspec
@@ -128,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
133
  - !ruby/object:Gem::Version
129
134
  version: '0'
130
135
  requirements: []
131
- rubygems_version: 3.3.26
136
+ rubygems_version: 3.4.1
132
137
  signing_key:
133
138
  specification_version: 4
134
139
  summary: Simple dataframe library for Ruby