scicom 0.3.0-java → 0.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
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
  #----------------------------------------------------------------------------------------