scicom 0.3.0-java → 0.4.0-java

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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +239 -55
  3. data/Rakefile +58 -5
  4. data/config.rb +34 -2
  5. data/doc/Array.html +153 -0
  6. data/doc/Java/OrgRenjinSexp/LogicalArrayVector.html +120 -0
  7. data/doc/Java/OrgRenjinSexp/StringArrayVector.html +133 -0
  8. data/doc/Java/RbScicom/MDDoubleVector.html +133 -0
  9. data/doc/MDArray.html +153 -0
  10. data/doc/MergeObservable.html +347 -0
  11. data/doc/NegRange.html +166 -0
  12. data/doc/PackageManager.html +823 -0
  13. data/doc/PackageManager/ParseXML.html +595 -0
  14. data/doc/Range.html +243 -0
  15. data/doc/Renjin.html +2210 -0
  16. data/doc/Renjin/Attributes.html +401 -0
  17. data/doc/Renjin/Closure.html +181 -0
  18. data/doc/Renjin/ComplexVector.html +557 -0
  19. data/doc/Renjin/DataFrame.html +258 -0
  20. data/doc/Renjin/Environment.html +279 -0
  21. data/doc/Renjin/Function.html +243 -0
  22. data/doc/Renjin/Index.html +628 -0
  23. data/doc/Renjin/List.html +398 -0
  24. data/doc/Renjin/Logical.html +352 -0
  25. data/doc/Renjin/Primitive.html +181 -0
  26. data/doc/Renjin/RBSexp.html +1151 -0
  27. data/doc/Renjin/RubySexp.html +498 -0
  28. data/doc/Renjin/Vector.html +3163 -0
  29. data/doc/RinRuby.html +2079 -0
  30. data/doc/_index.html +365 -0
  31. data/doc/class_list.html +58 -0
  32. data/doc/css/common.css +1 -0
  33. data/doc/css/full_list.css +57 -0
  34. data/doc/css/style.css +339 -0
  35. data/doc/file.README.html +159 -0
  36. data/doc/file_list.html +60 -0
  37. data/doc/frames.html +26 -0
  38. data/doc/index.html +159 -0
  39. data/doc/js/app.js +219 -0
  40. data/doc/js/full_list.js +181 -0
  41. data/doc/js/jquery.js +4 -0
  42. data/doc/method_list.html +939 -0
  43. data/doc/top-level-namespace.html +679 -0
  44. data/lib/JRubyR/attributes.rb +5 -2
  45. data/lib/JRubyR/callback.rb +115 -0
  46. data/lib/JRubyR/environment.rb +0 -1
  47. data/lib/JRubyR/indexed.rb +139 -0
  48. data/lib/JRubyR/list.rb +0 -16
  49. data/lib/JRubyR/logical_value.rb +0 -1
  50. data/lib/JRubyR/rbsexp.rb +20 -131
  51. data/lib/JRubyR/renjin.rb +201 -71
  52. data/lib/JRubyR/vector.rb +16 -15
  53. data/lib/scicom.rb +1 -3
  54. data/target/helper.jar +0 -0
  55. data/test/test_R_interface.rb +1 -1
  56. data/test/test_array.rb +1 -1
  57. data/test/test_assign_mdarray.rb +1 -1
  58. data/test/test_assign_mdarray_2d.rb +1 -1
  59. data/test/test_assign_mdarray_3d.rb +1 -1
  60. data/test/test_attributes.rb +1 -1
  61. data/test/test_basic.rb +7 -5
  62. data/test/test_callback.rb +176 -0
  63. data/test/test_complete.rb +1 -1
  64. data/test/test_creation.rb +29 -5
  65. data/test/test_dataframe.rb +1 -1
  66. data/test/test_factor.rb +1 -1
  67. data/test/test_functions.rb +13 -10
  68. data/test/test_linear_model.rb +1 -1
  69. data/test/test_list.rb +49 -10
  70. data/test/test_matrix.rb +6 -6
  71. data/test/test_operators.rb +1 -1
  72. data/test/test_package.rb +5 -5
  73. data/test/test_vector.rb +13 -7
  74. data/vendor/aether-api-1.0.2.v20150114.jar +0 -0
  75. data/vendor/aether-connector-basic-1.0.2.v20150114.jar +0 -0
  76. data/vendor/aether-impl-1.0.2.v20150114.jar +0 -0
  77. data/vendor/aether-spi-1.0.2.v20150114.jar +0 -0
  78. data/vendor/aether-transport-file-1.0.2.v20150114.jar +0 -0
  79. data/vendor/aether-transport-http-1.0.2.v20150114.jar +0 -0
  80. data/vendor/aether-util-1.0.2.v20150114.jar +0 -0
  81. data/vendor/aopalliance-1.0.jar +0 -0
  82. data/vendor/asm-3.3.1.jar +0 -0
  83. data/vendor/asm-5.0.4.jar +0 -0
  84. data/vendor/asm-commons-5.0.4.jar +0 -0
  85. data/vendor/asm-tree-5.0.4.jar +0 -0
  86. data/vendor/asm-util-5.0.4.jar +0 -0
  87. data/vendor/blas-0.8.jar +0 -0
  88. data/vendor/cdi-api-1.0.jar +0 -0
  89. data/vendor/codemodel-2.6.jar +0 -0
  90. data/vendor/collections-generic-4.01.jar +0 -0
  91. data/vendor/commons-codec-1.6.jar +0 -0
  92. data/vendor/commons-compress-1.4.1.jar +0 -0
  93. data/vendor/commons-logging-1.1.1.jar +0 -0
  94. data/vendor/commons-math-2.2.jar +0 -0
  95. data/vendor/commons-vfs2-2.0.jar +0 -0
  96. data/vendor/datasets-0.8.1891.jar +0 -0
  97. data/vendor/f2jutil-0.8.jar +0 -0
  98. data/vendor/gcc-runtime-0.8.1891.jar +0 -0
  99. data/vendor/grDevices-0.8.1891.jar +0 -0
  100. data/vendor/graphics-0.8.1891.jar +0 -0
  101. data/vendor/guava-17.0.jar +0 -0
  102. data/vendor/httpclient-4.2.6.jar +0 -0
  103. data/vendor/httpcore-4.2.5.jar +0 -0
  104. data/vendor/javax.inject-1.jar +0 -0
  105. data/vendor/jcl-over-slf4j-1.6.2.jar +0 -0
  106. data/vendor/joda-time-2.0.jar +0 -0
  107. data/vendor/jsr250-api-1.0.jar +0 -0
  108. data/vendor/jtransforms-2.4.jar +0 -0
  109. data/vendor/jung-api-2.0.1.jar +0 -0
  110. data/vendor/jung-graph-impl-2.0.1.jar +0 -0
  111. data/vendor/lapack-0.8.jar +0 -0
  112. data/vendor/maven-aether-provider-3.1.0.jar +0 -0
  113. data/vendor/maven-model-3.1.0.jar +0 -0
  114. data/vendor/maven-model-builder-3.1.0.jar +0 -0
  115. data/vendor/maven-repository-metadata-3.1.0.jar +0 -0
  116. data/vendor/maven-scm-api-1.4.jar +0 -0
  117. data/vendor/maven-scm-provider-svn-commons-1.4.jar +0 -0
  118. data/vendor/maven-scm-provider-svnexe-1.4.jar +0 -0
  119. data/vendor/maven-settings-3.1.0.jar +0 -0
  120. data/vendor/maven-settings-builder-3.1.0.jar +0 -0
  121. data/vendor/methods-0.8.1891.jar +0 -0
  122. data/vendor/netlib-java-0.9.3-renjin-patched-2.jar +0 -0
  123. data/vendor/org.eclipse.sisu.inject-0.0.0.M2a.jar +0 -0
  124. data/vendor/org.eclipse.sisu.plexus-0.0.0.M2a.jar +0 -0
  125. data/vendor/plexus-cipher-1.4.jar +0 -0
  126. data/vendor/plexus-classworlds-2.4.jar +0 -0
  127. data/vendor/plexus-component-annotations-1.5.5.jar +0 -0
  128. data/vendor/plexus-interpolation-1.16.jar +0 -0
  129. data/vendor/plexus-sec-dispatcher-1.3.jar +0 -0
  130. data/vendor/plexus-utils-1.5.6.jar +0 -0
  131. data/vendor/plexus-utils-3.0.10.jar +0 -0
  132. data/vendor/regexp-1.3.jar +0 -0
  133. data/vendor/renjin-aether-package-loader-0.8.1891.jar +0 -0
  134. data/vendor/renjin-appl-0.8.1891.jar +0 -0
  135. data/vendor/renjin-core-0.8.1891.jar +0 -0
  136. data/vendor/renjin-gnur-runtime-0.8.1891.jar +0 -0
  137. data/vendor/renjin-script-engine-0.8.1891.jar +0 -0
  138. data/vendor/sisu-guice-3.1.0-no_aop.jar +0 -0
  139. data/vendor/slf4j-api-1.6.2.jar +0 -0
  140. data/vendor/stats-0.8.1891.jar +0 -0
  141. data/vendor/utils-0.8.1891.jar +0 -0
  142. data/vendor/xerbla-0.8.jar +0 -0
  143. data/vendor/xz-1.0.jar +0 -0
  144. data/version.rb +1 -1
  145. metadata +229 -127
  146. data/cran/AppliedPredictiveModeling.jar +0 -0
  147. data/cran/AppliedPredictiveModeling.xml +0 -25
  148. data/cran/AssetPricing.jar +0 -0
  149. data/cran/AssetPricing.xml +0 -25
  150. data/lib/env.rb +0 -12
  151. data/lib/rinruby.rb +0 -795
  152. data/test/env.rb +0 -2
  153. data/test/test_tmp.rb +0 -67
  154. data/vendor/Renjin.pdf +0 -0
  155. data/vendor/renjin-script-engine-0.7.0-RC7-SNAPSHOT-jar-with-dependencies.jar +0 -0
@@ -1,5 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
-
3
2
  ##########################################################################################
4
3
  # @author Rodrigo Botafogo
5
4
  #
@@ -21,13 +20,10 @@
21
20
  # OR MODIFICATIONS.
22
21
  ##########################################################################################
23
22
 
24
- require 'java'
25
23
  require 'securerandom'
26
24
 
27
25
  require_relative 'rbsexp'
28
- require_relative 'package'
29
- # require_relative 'index'
30
-
26
+ # require_relative 'package'
31
27
 
32
28
  #==========================================================================================
33
29
  #
@@ -37,15 +33,57 @@ class Java::RbScicom::MDDoubleVector
37
33
  field_reader :_array
38
34
  end
39
35
 
40
-
41
36
  #==========================================================================================
42
37
  #
43
38
  #==========================================================================================
44
39
 
45
40
  class Renjin
46
- include_package "javax.script"
47
- include_package "org.renjin"
41
+ # include_package "javax.script"
42
+ # include_package "org.renjin"
43
+ # include_package "org.renjin.aether"
44
+ include_package "org.renjin.script"
45
+
46
+ java_import "org.renjin.eval.SessionBuilder"
47
+ java_import "org.renjin.primitives.packaging.PackageLoader"
48
+ java_import "org.renjin.aether.AetherPackageLoader"
49
+
50
+ #========================================================================================
51
+ # Class Writer is necessary if we want to redirect the standard output or standar err
52
+ # to a Ruby String for futher processing after a Renjin script evaluation. As can be
53
+ # seen this class requires improvements, but it is functional
54
+ #========================================================================================
55
+
56
+ class Writer < Java::JavaIo.Writer
48
57
 
58
+ attr_reader :string
59
+
60
+ def initialize(buffer)
61
+ @string = buffer
62
+ end
63
+
64
+ def write(string, offset, len)
65
+ @string << string
66
+ $stdout.pos = @string.length
67
+ end
68
+
69
+ def flush
70
+
71
+ end
72
+
73
+ def close
74
+
75
+ end
76
+
77
+ def output
78
+ puts @string
79
+ end
80
+
81
+ end
82
+
83
+ #========================================================================================
84
+ #
85
+ #========================================================================================
86
+
49
87
  @stack = Array.new
50
88
 
51
89
  class << self
@@ -80,24 +118,18 @@ class Renjin
80
118
 
81
119
  def initialize
82
120
 
83
- @platform =
84
- case RUBY_PLATFORM
85
- when /mswin/ then 'windows'
86
- when /mingw/ then 'windows'
87
- when /bccwin/ then 'windows'
88
- when /cygwin/ then 'windows-cygwin'
89
- when /java/
90
- require 'java' #:nodoc:
91
- if java.lang.System.getProperty("os.name") =~ /[Ww]indows/
92
- 'windows-java'
93
- else
94
- 'default-java'
95
- end
96
- else 'default'
97
- end
121
+ @session = SessionBuilder.new
122
+ .bind(PackageLoader.java_class, AetherPackageLoader.new)
123
+ .withDefaultPackages
124
+ .build
125
+ @engine = RenjinScriptEngineFactory.new.getScriptEngine(@session);
98
126
 
99
- factory = Java::JavaxScript.ScriptEngineManager.new()
100
- @engine = factory.getEngineByName("Renjin")
127
+ @default_std_out = @session.getStdOut()
128
+ @default_std_err = @session.connectionTable.getStderr()
129
+
130
+ # factory = Java::JavaxScript.ScriptEngineManager.new()
131
+ # @engine = factory.getEngineByName("Renjin")
132
+ raise "Renjin not found. Please check your CLASSPATH: #{$CLASSPATH}" if @engine == nil
101
133
  super
102
134
 
103
135
  end
@@ -106,6 +138,70 @@ class Renjin
106
138
  #
107
139
  #----------------------------------------------------------------------------------------
108
140
 
141
+ def set_std_out(buffer)
142
+
143
+ $stdout = StringIO.new(buffer)
144
+ @alternate_out = Writer.new(buffer)
145
+ print_writer = Java::JavaIo::PrintWriter.new(@alternate_out)
146
+ @session.setStdOut(print_writer)
147
+ self
148
+
149
+ end
150
+
151
+ #----------------------------------------------------------------------------------------
152
+ #
153
+ #----------------------------------------------------------------------------------------
154
+
155
+ def alternate_out
156
+ @alternate_out.string
157
+ end
158
+
159
+ #----------------------------------------------------------------------------------------
160
+ #
161
+ #----------------------------------------------------------------------------------------
162
+
163
+ def set_std_err(buffer)
164
+
165
+ $stderr = StringIO.new(buffer)
166
+ @alternate_err = Writer.new(buffer)
167
+ print_writer = Java::JavaIo::PrintWriter.new(@alternate_err)
168
+ @session.setStdErr(print_writer)
169
+ self
170
+
171
+ end
172
+
173
+ #----------------------------------------------------------------------------------------
174
+ #
175
+ #----------------------------------------------------------------------------------------
176
+
177
+ def alternate_err
178
+ @alternate_err.string
179
+ end
180
+
181
+ #----------------------------------------------------------------------------------------
182
+ #
183
+ #----------------------------------------------------------------------------------------
184
+
185
+ def set_default_std_out
186
+
187
+ $stdout = STDOUT
188
+ @session.setStdOut(@default_std_out)
189
+
190
+ end
191
+
192
+ #----------------------------------------------------------------------------------------
193
+ #
194
+ #----------------------------------------------------------------------------------------
195
+
196
+ def set_default_std_err
197
+ $stderr = STDERR
198
+ @session.setStdErr(@default_std_err)
199
+ end
200
+
201
+ #----------------------------------------------------------------------------------------
202
+ #
203
+ #----------------------------------------------------------------------------------------
204
+
109
205
  def nan?(x)
110
206
  is__nan(x)
111
207
  end
@@ -130,7 +226,11 @@ class Renjin
130
226
  end
131
227
 
132
228
  #----------------------------------------------------------------------------------------
133
- #
229
+ # When calling a R.<id>, we will call method_missing. This can be an assignment:
230
+ # R.name = <value>, can be a variable access: puts R.name, a call to a function without
231
+ # arguments R.<function> or a function with arguments. If it is a call to a function
232
+ # with arguments, then all arguments need to be parsed (and converted to R) and then
233
+ # the function is called.
134
234
  #----------------------------------------------------------------------------------------
135
235
 
136
236
  def method_missing(symbol, *args)
@@ -142,10 +242,8 @@ class Renjin
142
242
  name.gsub!("rclass", "class")
143
243
 
144
244
  if name =~ /(.*)=$/
145
- super if args.length != 1
146
245
  ret = assign($1,args[0])
147
246
  else
148
- # super if args.length != 0
149
247
  if (args.length == 0)
150
248
  # is_var = false
151
249
  # Try to see if name is a variable or a method.
@@ -161,43 +259,6 @@ class Renjin
161
259
 
162
260
  end
163
261
 
164
- #----------------------------------------------------------------------------------------
165
- # R built-in constants
166
- #----------------------------------------------------------------------------------------
167
-
168
- def pi
169
- eval("pi")
170
- end
171
-
172
- def LETTERS
173
- eval("LETTERS")
174
- end
175
-
176
- def letters
177
- eval("letters")
178
- end
179
-
180
- def month__abb
181
- eval("month.abb")
182
- end
183
-
184
- def month__name
185
- eval("month.name")
186
- end
187
-
188
- def i(value)
189
- eval("#{value}L")
190
- end
191
-
192
- def d(value)
193
- eval("#{value}")
194
- end
195
-
196
- def md(value)
197
- Renjin::Vector.new(build_vector(value))
198
- end
199
-
200
-
201
262
  #----------------------------------------------------------------------------------------
202
263
  #
203
264
  #----------------------------------------------------------------------------------------
@@ -243,7 +304,8 @@ class Renjin
243
304
  end
244
305
 
245
306
  #----------------------------------------------------------------------------------------
246
- #
307
+ # Parse an argument and returns a piece of R script needed to build a complete R
308
+ # statement.
247
309
  #----------------------------------------------------------------------------------------
248
310
 
249
311
  def parse(*args)
@@ -288,6 +350,15 @@ class Renjin
288
350
 
289
351
  end
290
352
 
353
+ #----------------------------------------------------------------------------------------
354
+ # Converts the given parameter into an R object. If the parameter is already an R
355
+ # object, then leave it unchanged.
356
+ #----------------------------------------------------------------------------------------
357
+
358
+ def convert(param)
359
+ R.eval(parse(param))
360
+ end
361
+
291
362
  #----------------------------------------------------------------------------------------
292
363
  # Data is copied from Ruby to R using the assign method or a short-hand equivalent. For
293
364
  # example:
@@ -345,13 +416,16 @@ class Renjin
345
416
 
346
417
  original_value = value
347
418
 
348
- if ((value.is_a? MDArray) || (value.is_a? RubySexp))
419
+ if ((value.is_a? MDArray)) # || (value.is_a? RubySexp))
349
420
  if (value.sexp != nil)
350
421
  # MDArray already represented in R
351
422
  value = value.sexp
352
423
  else
353
424
  value = build_vector(value)
354
425
  end
426
+ elsif (value.is_a? RubySexp)
427
+ # puts "I'm a Sexp: #{value} and value.sexp is #{value.sexp}"
428
+ value = value.sexp
355
429
  elsif (value == nil)
356
430
  value = NULL
357
431
  end
@@ -406,7 +480,7 @@ class Renjin
406
480
  pm.load_package(name)
407
481
 
408
482
  end
409
-
483
+ =begin
410
484
  #----------------------------------------------------------------------------------------
411
485
  #
412
486
  #----------------------------------------------------------------------------------------
@@ -420,15 +494,65 @@ class Renjin
420
494
  eval("library(#{package})")
421
495
 
422
496
  end
497
+ =end
423
498
 
424
499
  #----------------------------------------------------------------------------------------
425
- # Builds a Renjin vector from an MDArray. Should be private, but public for testing.
500
+ # R built-in constants
426
501
  #----------------------------------------------------------------------------------------
427
502
 
428
- # private
503
+ def pi
504
+ eval("pi")
505
+ end
506
+
507
+ def LETTERS
508
+ eval("LETTERS")
509
+ end
510
+
511
+ def letters
512
+ eval("letters")
513
+ end
514
+
515
+ def month__abb
516
+ eval("month.abb")
517
+ end
518
+
519
+ def month__name
520
+ eval("month.name")
521
+ end
522
+
523
+ def i(value)
524
+ eval("#{value}L")
525
+ end
526
+
527
+ def d(value)
528
+ eval("#{value}")
529
+ end
429
530
 
430
531
  #----------------------------------------------------------------------------------------
431
- # Builds a Renjin vector from an MDArray. Should be private, but public for testing.
532
+ # Creates a new Renjin Vector based on an MDArray
533
+ #----------------------------------------------------------------------------------------
534
+
535
+ def md(value)
536
+ Renjin::Vector.new(build_vector(value))
537
+ end
538
+
539
+ #----------------------------------------------------------------------------------------
540
+ # Packs a ruby class inside a RBSexp, so that methods in the Ruby class can be called
541
+ # back from inside an R script
542
+ #----------------------------------------------------------------------------------------
543
+
544
+ def rpack(ruby_class, scope: :external)
545
+ Renjin::Callback.pack(ruby_class, scope: scope)
546
+ end
547
+
548
+ #----------------------------------------------------------------------------------------
549
+ #
550
+ #----------------------------------------------------------------------------------------
551
+
552
+ private
553
+
554
+ #----------------------------------------------------------------------------------------
555
+ # Builds a Renjin vector from an MDArray.
432
556
  #----------------------------------------------------------------------------------------
433
557
 
434
558
  def build_vector(mdarray)
@@ -473,6 +597,8 @@ end
473
597
 
474
598
  # Create a new R interpreter
475
599
  R = Renjin.new
600
+
601
+ # Add some constants to the R interpreter
476
602
  NA = R.eval("NA")
477
603
  NaN = R.eval("NaN")
478
604
  Inf = R.eval("Inf")
@@ -480,3 +606,7 @@ MInf = R.eval("-Inf")
480
606
  NULL = R.direct_eval("NULL")
481
607
  # EPSILON = R.eval("EPSILON")
482
608
  # NA_integer = R.eval("NA_integer")
609
+
610
+ # create a R variable Ruby.Object that allow access to Ruby Object class
611
+ R.Ruby__Object = Renjin::Callback.new(Object)
612
+
@@ -21,8 +21,6 @@
21
21
  # OR MODIFICATIONS.
22
22
  ##########################################################################################
23
23
 
24
- require 'java'
25
-
26
24
 
27
25
  #==========================================================================================
28
26
  #
@@ -36,6 +34,9 @@ class Java::OrgRenjinSexp::LogicalArrayVector
36
34
  field_reader :values
37
35
  end
38
36
 
37
+ class Java::OrgRenjinSexp::LongArrayVector
38
+ field_reader :values
39
+ end
39
40
 
40
41
  #==========================================================================================
41
42
  #
@@ -64,7 +65,7 @@ class Renjin
64
65
  #----------------------------------------------------------------------------------------
65
66
 
66
67
  def integer?
67
- R.is__integer(R.eval("#{r}")).gt
68
+ R.eval("#{r}").is__integer.gt
68
69
  end
69
70
 
70
71
  #----------------------------------------------------------------------------------------
@@ -131,7 +132,7 @@ class Renjin
131
132
  def eq(other_val)
132
133
  (other_val == nil)? false : R.eval("identical(#{r},#{other_val.r})")
133
134
  end
134
-
135
+ =begin
135
136
  #----------------------------------------------------------------------------------------
136
137
  #
137
138
  #----------------------------------------------------------------------------------------
@@ -163,7 +164,7 @@ class Renjin
163
164
  def as__character
164
165
  R.as__character(self)
165
166
  end
166
-
167
+ =end
167
168
  #----------------------------------------------------------------------------------------
168
169
  #
169
170
  #----------------------------------------------------------------------------------------
@@ -171,19 +172,20 @@ class Renjin
171
172
  def as__mdarray
172
173
 
173
174
  if (@mdarray)
174
- elsif (@sexp.instance_of? Java::RbScicom::MDDoubleVector)
175
+ elsif (@sexp.java_kind_of? Java::RbScicom::MDDoubleVector)
175
176
  @mdarray = MDArray.build_from_nc_array(:double, @sexp.array)
176
- elsif (@sexp.instance_of? Java::OrgRenjinSexp::DoubleArrayVector)
177
+ elsif (@sexp.java_kind_of? Java::OrgRenjinSexp::DoubleArrayVector)
177
178
  @mdarray = MDArray.from_jstorage("double", [@sexp.length()], @sexp.toDoubleArrayUnsafe())
178
- elsif (@sexp.instance_of? Java::OrgRenjinSexp::IntArrayVector)
179
+ elsif (sexp.instance_of? Java::OrgRenjinSexp::LongArrayVector)
180
+ @mdarray = MDArray.from_jstorage("long", [@sexp.length()], @sexp.values)
181
+ elsif (@sexp.java_kind_of? Java::OrgRenjinSexp::IntArrayVector)
179
182
  @mdarray = MDArray.from_jstorage("int", [@sexp.length()], @sexp.toIntArrayUnsafe())
180
- elsif (@sexp.instance_of? Java::OrgRenjinSexp::StringArrayVector)
183
+ elsif (@sexp.java_kind_of? Java::OrgRenjinSexp::StringArrayVector)
181
184
  @mdarray = MDArray.from_jstorage("string", [@sexp.length()], @sexp.values)
182
- elsif (@sexp.instance_of? Java::OrgRenjinSexp::LogicalArrayVector)
185
+ elsif (@sexp.java_kind_of? Java::OrgRenjinSexp::LogicalArrayVector)
183
186
  @mdarray = MDArray.from_jstorage("int", [@sexp.length()], @sexp.values)
184
187
  else
185
- p "sexp type needs to be specialized"
186
- p @sexp
188
+ p "as__mdarray: sexp type needs to be specialized: #{@sexp}"
187
189
  @mdarray = Renjin::RubySexp.new(@sexp)
188
190
  end
189
191
 
@@ -258,7 +260,6 @@ class Renjin
258
260
  other_vec = R.d(other_vec)
259
261
  end
260
262
  R.eval("#{r} + #{other_vec.r}")
261
-
262
263
  end
263
264
 
264
265
  #----------------------------------------------------------------------------------------
@@ -385,11 +386,11 @@ class Renjin
385
386
  #----------------------------------------------------------------------------------------
386
387
  #
387
388
  #----------------------------------------------------------------------------------------
388
-
389
+ =begin
389
390
  def !
390
391
  R.eval("!#{r}")
391
392
  end
392
-
393
+ =end
393
394
  #----------------------------------------------------------------------------------------
394
395
  #
395
396
  #----------------------------------------------------------------------------------------