galaaz 0.4.0

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 (86) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +32 -0
  3. data/Rakefile +177 -0
  4. data/bin/galaaz +8 -0
  5. data/examples/50Plots_MasterList/scatter_plot.rb +51 -0
  6. data/examples/baseball.csv +1 -0
  7. data/examples/baseball.rb +16 -0
  8. data/examples/ggplot.rb +178 -0
  9. data/examples/islr/Figure.jpg +0 -0
  10. data/examples/islr/all.rb +32 -0
  11. data/examples/islr/ch2.spec.rb +148 -0
  12. data/examples/islr/ch3.spec.rb +28 -0
  13. data/examples/islr/ch3_boston.rb +77 -0
  14. data/examples/islr/ch3_multiple_regression.rb +36 -0
  15. data/examples/islr/ch6.spec.rb +64 -0
  16. data/examples/paper/paper.rb +36 -0
  17. data/examples/sthda_ggplot/README.md +38 -0
  18. data/examples/sthda_ggplot/all.rb +68 -0
  19. data/examples/sthda_ggplot/one_variable_continuous/density_gg.rb +52 -0
  20. data/examples/sthda_ggplot/one_variable_continuous/geom_area.rb +61 -0
  21. data/examples/sthda_ggplot/one_variable_continuous/geom_density.rb +77 -0
  22. data/examples/sthda_ggplot/one_variable_continuous/geom_dotplot.rb +69 -0
  23. data/examples/sthda_ggplot/one_variable_continuous/geom_freqpoly.rb +69 -0
  24. data/examples/sthda_ggplot/one_variable_continuous/geom_histogram.rb +62 -0
  25. data/examples/sthda_ggplot/one_variable_continuous/histogram_density.rb +55 -0
  26. data/examples/sthda_ggplot/one_variable_continuous/stat.rb +62 -0
  27. data/examples/sthda_ggplot/one_variable_discrete/bar.rb +54 -0
  28. data/examples/sthda_ggplot/qplots/box_violin_dot.rb +57 -0
  29. data/examples/sthda_ggplot/qplots/scatter_plots.rb +67 -0
  30. data/examples/sthda_ggplot/scatter_gg.rb +60 -0
  31. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_bin2d.rb +49 -0
  32. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_density2d.rb +64 -0
  33. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_hex.rb +52 -0
  34. data/examples/sthda_ggplot/two_variables_cont_cont/geom_point.rb +65 -0
  35. data/examples/sthda_ggplot/two_variables_cont_cont/geom_smooth.rb +66 -0
  36. data/examples/sthda_ggplot/two_variables_cont_cont/misc.rb +83 -0
  37. data/examples/sthda_ggplot/two_variables_cont_function/geom_area.rb +63 -0
  38. data/examples/sthda_ggplot/two_variables_disc_cont/geom_bar.rb +85 -0
  39. data/examples/sthda_ggplot/two_variables_disc_cont/geom_boxplot.rb +62 -0
  40. data/examples/sthda_ggplot/two_variables_disc_cont/geom_dotplot.rb +75 -0
  41. data/examples/sthda_ggplot/two_variables_disc_cont/geom_jitter.rb +74 -0
  42. data/examples/sthda_ggplot/two_variables_disc_cont/geom_line.rb +55 -0
  43. data/examples/sthda_ggplot/two_variables_disc_cont/geom_violin.rb +70 -0
  44. data/examples/sthda_ggplot/two_variables_disc_disc/geom_jitter.rb +40 -0
  45. data/examples/sthda_ggplot/two_variables_error/geom_crossbar.rb +108 -0
  46. data/examples/subsetting.rb +372 -0
  47. data/lib/expression.rb +45 -0
  48. data/lib/galaaz.rb +27 -0
  49. data/lib/r.rb +118 -0
  50. data/lib/r_methods.rb +89 -0
  51. data/lib/rbinary_operators.rb +226 -0
  52. data/lib/rclosure.rb +34 -0
  53. data/lib/rdata_frame.rb +63 -0
  54. data/lib/renvironment.rb +34 -0
  55. data/lib/rexpression.rb +34 -0
  56. data/lib/rindexed_object.rb +68 -0
  57. data/lib/rlanguage.rb +64 -0
  58. data/lib/rlist.rb +72 -0
  59. data/lib/rmatrix.rb +38 -0
  60. data/lib/rmd_indexed_object.rb +43 -0
  61. data/lib/robject.rb +297 -0
  62. data/lib/rpkg.rb +53 -0
  63. data/lib/rsupport.rb +292 -0
  64. data/lib/rsupport_scope.rb +77 -0
  65. data/lib/rsymbol.rb +57 -0
  66. data/lib/ruby_callback.rb +83 -0
  67. data/lib/ruby_extensions.rb +74 -0
  68. data/lib/runary_operators.rb +58 -0
  69. data/lib/rvector.rb +117 -0
  70. data/r_requires/ggplot.rb +31 -0
  71. data/specs/all.rb +45 -0
  72. data/specs/r_dataframe.spec.rb +181 -0
  73. data/specs/r_eval.spec.rb +164 -0
  74. data/specs/r_function.spec.rb +105 -0
  75. data/specs/r_language.spec.rb +135 -0
  76. data/specs/r_list.spec.rb +129 -0
  77. data/specs/r_list_apply.spec.rb +99 -0
  78. data/specs/r_matrix.spec.rb +83 -0
  79. data/specs/r_vector_creation.spec.rb +99 -0
  80. data/specs/r_vector_functions.spec.rb +59 -0
  81. data/specs/r_vector_object.spec.rb +94 -0
  82. data/specs/r_vector_operators.spec.rb +174 -0
  83. data/specs/r_vector_subsetting.spec.rb +136 -0
  84. data/specs/tmp.rb +134 -0
  85. data/version.rb +2 -0
  86. metadata +198 -0
@@ -0,0 +1,45 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##########################################################################################
4
+ # @author Rodrigo Botafogo
5
+ #
6
+ # Copyright © 2018 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
7
+ # and distribute this software and its documentation, without fee and without a signed
8
+ # licensing agreement, is hereby granted, provided that the above copyright notice, this
9
+ # paragraph and the following two paragraphs appear in all copies, modifications, and
10
+ # distributions.
11
+ #
12
+ # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
13
+ # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
14
+ # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
15
+ # POSSIBILITY OF SUCH DAMAGE.
16
+ #
17
+ # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
19
+ # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
20
+ # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
21
+ # OR MODIFICATIONS.
22
+ ##########################################################################################
23
+
24
+ module E
25
+
26
+ #----------------------------------------------------------------------------------------
27
+ # @param symbol [Symbol]
28
+ # @param args [Array] arguments to the missing method
29
+ #----------------------------------------------------------------------------------------
30
+
31
+ def self.method_missing(symbol, *args)
32
+ name = R::Support.convert_symbol2r(symbol)
33
+ R::Language.build(name, *args)
34
+ end
35
+
36
+ #--------------------------------------------------------------------------------------
37
+ #
38
+ #--------------------------------------------------------------------------------------
39
+
40
+ def self.[](executable)
41
+ R::RubyCallback.build(executable)
42
+ end
43
+
44
+ end
45
+
@@ -0,0 +1,27 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##########################################################################################
4
+ # @author Rodrigo Botafogo
5
+ #
6
+ # Copyright © 2018 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
7
+ # and distribute this software and its documentation, without fee and without a signed
8
+ # licensing agreement, is hereby granted, provided that the above copyright notice, this
9
+ # paragraph and the following two paragraphs appear in all copies, modifications, and
10
+ # distributions.
11
+ #
12
+ # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
13
+ # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
14
+ # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
15
+ # POSSIBILITY OF SUCH DAMAGE.
16
+ #
17
+ # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
19
+ # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
20
+ # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
21
+ # OR MODIFICATIONS.
22
+ ##########################################################################################
23
+
24
+ require_relative 'r'
25
+
26
+ $LOAD_PATH << File.dirname(File.expand_path('..', __FILE__)) + "/r_requires"
27
+
@@ -0,0 +1,118 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##########################################################################################
4
+ # @author Rodrigo Botafogo
5
+ #
6
+ # Copyright © 2018 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
7
+ # and distribute this software and its documentation, without fee and without a signed
8
+ # licensing agreement, is hereby granted, provided that the above copyright notice, this
9
+ # paragraph and the following two paragraphs appear in all copies, modifications, and
10
+ # distributions.
11
+ #
12
+ # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
13
+ # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
14
+ # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
15
+ # POSSIBILITY OF SUCH DAMAGE.
16
+ #
17
+ # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
19
+ # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
20
+ # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
21
+ # OR MODIFICATIONS.
22
+ ##########################################################################################
23
+
24
+ require_relative 'robject'
25
+ require_relative 'rsupport'
26
+
27
+ module R
28
+
29
+ RCONSTANTS = ["LETTERS", "letters", "month.abb", "month.name", "pi"]
30
+
31
+ #----------------------------------------------------------------------------------------
32
+ #
33
+ #----------------------------------------------------------------------------------------
34
+
35
+ def self.method_missing(symbol, *args, &block)
36
+
37
+ if (block_given?)
38
+ val = R::Support.process_missing(symbol, false, *args)
39
+ return R::Support.new_scope(symbol, val, *args, &block)
40
+ end
41
+
42
+ R::Support.process_missing(symbol, false, *args)
43
+
44
+ end
45
+
46
+ #----------------------------------------------------------------------------------------
47
+ #
48
+ #----------------------------------------------------------------------------------------
49
+
50
+ def self.internal_eval(symbol, *args)
51
+ R::Support.process_missing(symbol, true, *args)
52
+ end
53
+
54
+ #----------------------------------------------------------------------------------------
55
+ # Checks to see if the given libs are installed in R and if not, install them
56
+ # @param libs [Array] Array of strings with the names of the libraries to check and
57
+ # install
58
+ #----------------------------------------------------------------------------------------
59
+
60
+ def self.install_rlibs(*libs)
61
+
62
+ packages = R.c(libs)
63
+
64
+ new_packages = packages[!(packages._ :in, R.installed__packages[:all, "Package"])]
65
+ if(new_packages.size > 0)
66
+ puts "The following packages are missing and will be installed:\n #{new_packages}"
67
+ R.install__packages(new_packages)
68
+ end
69
+
70
+ end
71
+
72
+ #----------------------------------------------------------------------------------------
73
+ #
74
+ #----------------------------------------------------------------------------------------
75
+
76
+ def self.install_and_loads(*libs)
77
+ R.install_rlibs(*libs)
78
+ libs.each { |lib| R.require lib }
79
+ end
80
+
81
+ end
82
+
83
+ # define methods for accessing indexed object: Vector, Lists
84
+ require_relative 'rindexed_object'
85
+ # define methods for accessing multi dimensional indexed objects: Matrix, DataFrames
86
+ require_relative 'rmd_indexed_object'
87
+ # Binary operators: '+', '-', etc
88
+ require_relative 'rbinary_operators'
89
+ # Unary operators: '!', '@-', etc
90
+ require_relative 'runary_operators'
91
+ # Definition of R Vector
92
+ require_relative 'rvector'
93
+ # Definition of R Lists
94
+ require_relative 'rlist'
95
+ # Definition of R Matrix
96
+ require_relative 'rmatrix'
97
+ # Definition of R DataFrame
98
+ require_relative 'rdata_frame'
99
+ # Definition of R Closure (functions)
100
+ require_relative 'rclosure'
101
+ # Definition of R Expression
102
+ require_relative 'rexpression'
103
+ # Definition of R Environment
104
+ require_relative 'renvironment'
105
+ # Definition of R Language
106
+ require_relative 'rlanguage'
107
+ # Definition of R Symbol
108
+ require_relative 'rsymbol'
109
+ # Access to package symbols
110
+ require_relative 'rpkg'
111
+
112
+ # Defines the E module for creating R expressions
113
+ require_relative 'expression'
114
+ # Ruby class extensions. Extends Symbol to allow the creation of
115
+ # expressions using Symbol: (:x > 10)
116
+ require_relative 'ruby_extensions'
117
+ # Class to allow R calling back into Ruby
118
+ require_relative 'ruby_callback'
@@ -0,0 +1,89 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##########################################################################################
4
+ # @author Rodrigo Botafogo
5
+ #
6
+ # Copyright © 2018 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
7
+ # and distribute this software and its documentation, without fee and without a signed
8
+ # licensing agreement, is hereby granted, provided that the above copyright notice, this
9
+ # paragraph and the following two paragraphs appear in all copies, modifications, and
10
+ # distributions.
11
+ #
12
+ # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
13
+ # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
14
+ # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
15
+ # POSSIBILITY OF SUCH DAMAGE.
16
+ #
17
+ # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
19
+ # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
20
+ # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
21
+ # OR MODIFICATIONS.
22
+ ##########################################################################################
23
+
24
+ module R
25
+
26
+ module Support
27
+
28
+ #--------------------------------------------------------------------------------------
29
+ # Captures the R output to a variable and returns it.
30
+ #--------------------------------------------------------------------------------------
31
+
32
+ def self.capture
33
+
34
+ Polyglot.eval("R", <<-R)
35
+ function(obj, ...) {
36
+ sink(tt <- textConnection("results","w"), split=FALSE);
37
+ print(obj, ...);
38
+ sink();
39
+ close(tt);
40
+ results
41
+ }
42
+ R
43
+
44
+ end
45
+
46
+ #--------------------------------------------------------------------------------------
47
+ # multi-dimensional indexing
48
+ #--------------------------------------------------------------------------------------
49
+
50
+ def self.md_index
51
+ Polyglot.eval("R", <<-R)
52
+ function(mdobject, ...) {
53
+ mdobject[...];
54
+ }
55
+ R
56
+ end
57
+
58
+ #--------------------------------------------------------------------------------------
59
+ # R function that returns another R function that calls back a Ruby Method or Proc
60
+ # Some R functions that receive a function as argument will test to see if their
61
+ # parameters is a function or a symbol, so the Ruby method needs to be wrapped inside
62
+ # an R function in order for it to pass this test.
63
+ #--------------------------------------------------------------------------------------
64
+
65
+ def self.ruby_callback_method
66
+ Polyglot.eval("R", <<-R)
67
+ function(rb_method) {
68
+ function(...) {
69
+ rb_method(...)
70
+ }
71
+ }
72
+ R
73
+ end
74
+
75
+ #--------------------------------------------------------------------------------------
76
+ # @bug Needed to create method row__names because dispatch is not working properly
77
+ #--------------------------------------------------------------------------------------
78
+
79
+ def self.set_row_names
80
+ Polyglot.eval("R", "function(object, x) row.names(object) <- x")
81
+ end
82
+
83
+ def self.get_row_names
84
+ Polyglot.eval("R", "function(x) row.names(x)")
85
+ end
86
+
87
+ end
88
+
89
+ end
@@ -0,0 +1,226 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##########################################################################################
4
+ # @author Rodrigo Botafogo
5
+ #
6
+ # Copyright © 2018 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
7
+ # and distribute this software and its documentation, without fee and without a signed
8
+ # licensing agreement, is hereby granted, provided that the above copyright notice, this
9
+ # paragraph and the following two paragraphs appear in all copies, modifications, and
10
+ # distributions.
11
+ #
12
+ # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
13
+ # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
14
+ # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
15
+ # POSSIBILITY OF SUCH DAMAGE.
16
+ #
17
+ # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
19
+ # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
20
+ # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
21
+ # OR MODIFICATIONS.
22
+ ##########################################################################################
23
+
24
+ module R
25
+
26
+ #--------------------------------------------------------------------------------------
27
+ # Module for binary operators with normal elements: matrix, vector, etc.
28
+ #--------------------------------------------------------------------------------------
29
+
30
+ module ExecBinOp
31
+
32
+ #--------------------------------------------------------------------------------------
33
+ #
34
+ #--------------------------------------------------------------------------------------
35
+
36
+ def exec_oper(operator, other_object)
37
+ R::Support.exec_function_name(operator, @r_interop, other_object)
38
+ end
39
+
40
+ end
41
+
42
+ #--------------------------------------------------------------------------------------
43
+ # Module for binary operators when creating an expression (call)
44
+ #--------------------------------------------------------------------------------------
45
+
46
+ module CallBinOp
47
+
48
+ #--------------------------------------------------------------------------------------
49
+ #
50
+ #--------------------------------------------------------------------------------------
51
+
52
+ def exec_oper(operator, other_object)
53
+ R::Language.build(operator, self, other_object)
54
+ end
55
+
56
+ end
57
+
58
+ #--------------------------------------------------------------------------------------
59
+ # Module for binary operators when creating formulas
60
+ #--------------------------------------------------------------------------------------
61
+
62
+ module FormulaBinOp
63
+ #--------------------------------------------------------------------------------------
64
+ #
65
+ #--------------------------------------------------------------------------------------
66
+
67
+ def prep_object(object)
68
+
69
+ case object
70
+ when :all
71
+ '.'
72
+ when R::RSymbol, Symbol
73
+ object.to_s
74
+ when R::Language
75
+ R.deparse(object).substring(2)
76
+ when String
77
+ object
78
+ end
79
+
80
+ end
81
+
82
+ #--------------------------------------------------------------------------------------
83
+ #
84
+ #--------------------------------------------------------------------------------------
85
+
86
+ def exec_oper(operator, other_object, response = false)
87
+
88
+ o1 = prep_object(self)
89
+ o2 = prep_object(other_object)
90
+
91
+ response ? R.reformulate(o2, response: o1) :
92
+ R.reformulate(R.paste0(o1, operator.delete("`"), o2))
93
+
94
+ end
95
+
96
+ end
97
+
98
+ #--------------------------------------------------------------------------------------
99
+ # Note that binary operators work on vectors and matrices as well as scalars.
100
+ #--------------------------------------------------------------------------------------
101
+
102
+ module BinaryOperators
103
+
104
+ #--------------------------------------------------------------------------------------
105
+ # @param other_object
106
+ #--------------------------------------------------------------------------------------
107
+
108
+ def +(other_object)
109
+ exec_oper("`+`", other_object)
110
+ end
111
+
112
+ #--------------------------------------------------------------------------------------
113
+ #
114
+ #--------------------------------------------------------------------------------------
115
+
116
+ def -(other_object)
117
+ exec_oper("`-`", other_object)
118
+ end
119
+
120
+ #--------------------------------------------------------------------------------------
121
+ #
122
+ #--------------------------------------------------------------------------------------
123
+
124
+ def *(other_object)
125
+ exec_oper("`*`", other_object)
126
+ end
127
+
128
+ #--------------------------------------------------------------------------------------
129
+ #
130
+ #--------------------------------------------------------------------------------------
131
+
132
+ def /(other_object)
133
+ exec_oper("`/`", other_object)
134
+ end
135
+
136
+ #--------------------------------------------------------------------------------------
137
+ #
138
+ #--------------------------------------------------------------------------------------
139
+
140
+ def **(other_object)
141
+ exec_oper("`^`", other_object)
142
+ end
143
+
144
+ #--------------------------------------------------------------------------------------
145
+ #
146
+ #--------------------------------------------------------------------------------------
147
+
148
+ def %(other_object)
149
+ exec_oper("`%%`", other_object)
150
+ end
151
+
152
+ #--------------------------------------------------------------------------------------
153
+ #
154
+ #--------------------------------------------------------------------------------------
155
+
156
+ def ==(other_object)
157
+ exec_oper("`==`", other_object)
158
+ end
159
+
160
+ #--------------------------------------------------------------------------------------
161
+ #
162
+ #--------------------------------------------------------------------------------------
163
+
164
+ def <(other_object)
165
+ exec_oper("`<`", other_object)
166
+ end
167
+
168
+ #--------------------------------------------------------------------------------------
169
+ #
170
+ #--------------------------------------------------------------------------------------
171
+
172
+ def <=(other_object)
173
+ exec_oper("`<=`", other_object)
174
+ end
175
+
176
+ #--------------------------------------------------------------------------------------
177
+ #
178
+ #--------------------------------------------------------------------------------------
179
+
180
+ def >(other_object)
181
+ exec_oper("`>`", other_object)
182
+ end
183
+
184
+ #--------------------------------------------------------------------------------------
185
+ #
186
+ #--------------------------------------------------------------------------------------
187
+
188
+ def >=(other_object)
189
+ exec_oper("`>=`", other_object)
190
+ end
191
+
192
+ #--------------------------------------------------------------------------------------
193
+ #
194
+ #--------------------------------------------------------------------------------------
195
+
196
+ def !=(other_object)
197
+ exec_oper("`!=`", other_object)
198
+ end
199
+
200
+ #--------------------------------------------------------------------------------------
201
+ #
202
+ #--------------------------------------------------------------------------------------
203
+
204
+ def &(other_object)
205
+ R::Support.exec_function_name("`&`", @r_interop, other_object.r_interop)
206
+ end
207
+
208
+ #--------------------------------------------------------------------------------------
209
+ #
210
+ #--------------------------------------------------------------------------------------
211
+
212
+ def |(other_object)
213
+ R::Support.exec_function_name("`|`", @r_interop, other_object.r_interop)
214
+ end
215
+
216
+ #--------------------------------------------------------------------------------------
217
+ #
218
+ #--------------------------------------------------------------------------------------
219
+
220
+ def coerce(numeric)
221
+ [R.c(numeric), self]
222
+ end
223
+
224
+ end
225
+
226
+ end