rserve-client 0.1.4 → 0.1.5

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.
data.tar.gz.sig CHANGED
Binary file
@@ -1,4 +1,4 @@
1
- === 0.1.4 / 2010-05-24
1
+ === 0.1.5 / 2010-05-24
2
2
  * Bug fix: Incorrect NA for Logical, String and Double Vector
3
3
  * Factors implemented
4
4
 
@@ -12,6 +12,7 @@ lib/rserve/protocol.rb
12
12
  lib/rserve/protocol/rexpfactory.rb
13
13
  lib/rserve/rexp.rb
14
14
  lib/rserve/rexp/double.rb
15
+ lib/rserve/rexp/factor.rb
15
16
  lib/rserve/rexp/genericvector.rb
16
17
  lib/rserve/rexp/integer.rb
17
18
  lib/rserve/rexp/language.rb
@@ -22,15 +23,18 @@ lib/rserve/rexp/string.rb
22
23
  lib/rserve/rexp/symbol.rb
23
24
  lib/rserve/rexp/unknown.rb
24
25
  lib/rserve/rexp/vector.rb
26
+ lib/rserve/rfactor.rb
25
27
  lib/rserve/rlist.rb
26
28
  lib/rserve/talk.rb
27
29
  spec/rserve_connection_spec.rb
28
30
  spec/rserve_double_spec.rb
29
31
  spec/rserve_integer_spec.rb
32
+ spec/rserve_logical_spec.rb
30
33
  spec/rserve_packet_spec.rb
31
34
  spec/rserve_protocol_spec.rb
32
35
  spec/rserve_rexp_spec.rb
33
36
  spec/rserve_rexpfactory_spec.rb
37
+ spec/rserve_rfactor_spec.rb
34
38
  spec/rserve_spec.rb
35
39
  spec/rserve_talk_spec.rb
36
40
  spec/spec.opts
data/README.txt CHANGED
@@ -43,7 +43,7 @@ Cons:
43
43
  * Seamless integration with ruby. Every method and object is treated like a Ruby one
44
44
  * Cons:
45
45
  * Transformation between R and Ruby types aren't trivial
46
- * Dependent of operating system, Ruby implementation and R version
46
+ * Dependent on operating system, Ruby implementation and R version
47
47
  * Not available for alternative implementations of Ruby (JRuby, IronRuby and Rubinius)
48
48
 
49
49
 
@@ -54,7 +54,6 @@ Implements
54
54
  * REXPs
55
55
  * Enviroment
56
56
  * ExpressionVector
57
- * Factor
58
57
  * Raw
59
58
  * Reference
60
59
  * S4
@@ -1,7 +1,7 @@
1
1
  require 'socket'
2
2
 
3
3
  module Rserve
4
- VERSION = '0.1.4'
4
+ VERSION = '0.1.5'
5
5
  end
6
6
 
7
7
 
@@ -0,0 +1,23 @@
1
+ module Rserve
2
+ class REXP
3
+ class Factor < REXP::Integer
4
+ def initialize(ids,levels,attr=nil)
5
+ super(ids,attr)
6
+ @levels = (levels.nil?)? Array.new : levels;
7
+ @factor = RFactor.new(@payload, @levels, false, 1)
8
+ end
9
+ def factor?
10
+ true
11
+ end
12
+ def as_factor
13
+ @factor
14
+ end
15
+ def as_strings
16
+ @factor.as_strings
17
+ end
18
+ def to_s
19
+ super+"[#{levels.length}]"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,62 @@
1
+ module Rserve
2
+ class RFactor
3
+ attr_reader :ids
4
+ attr_reader :levels
5
+ attr_reader :index_base
6
+ def initialize(i,v,copy,index_base)
7
+ i=[] if i.nil?
8
+ v=[] if v.nil?
9
+ if (copy)
10
+ @ids=i.dup
11
+ @levels=v.dup
12
+ else
13
+ @ids=i
14
+ @levels=v
15
+ end
16
+ @index_base=index_base
17
+ end
18
+ # returns the level of a given case
19
+ # * @param i case number
20
+ # * @return name. may throw exception if out of range
21
+ def [](i)
22
+ li = @ids[i]-index_base
23
+ return (li<0 or li>levels.length) ? nil : levels[li]
24
+ end
25
+ def contains?(li)
26
+ li=level_index(li) if li.is_a? String
27
+ @ids.any? {|v| v==li}
28
+ end
29
+
30
+ # return the index of a given level name or -1 if it doesn't exist
31
+ def level_index(name)
32
+ return nil if name.nil?
33
+ levels.length.times {|i|
34
+ return i+index_base if !levels[i].nil? and levels[i]==name
35
+ }
36
+ return nil
37
+ end
38
+ def count(li)
39
+ li=level_index(li) if li.is_a? String
40
+ @ids.inject(0) {|ac,v| ac+ ((v==li) ? 1 : 0 ) }
41
+ end
42
+ # return a hash with levels as keys and counts as values
43
+ def counts_hash
44
+ h=@levels.inject({}) {|ac,v| ac[v]=0;ac}
45
+ @ids.each {|v| h[@levels[v-index_base]]+=1}
46
+ h
47
+ end
48
+ def as_integers
49
+ @ids
50
+ end
51
+ def as_strings
52
+ @ids.map {|v| @levels[v-index_base]}
53
+ end
54
+ def index_at(i)
55
+ @ids[i]
56
+ end
57
+ def size
58
+ @ids.length
59
+ end
60
+ alias :at :[]
61
+ end
62
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 4
9
- version: 0.1.4
8
+ - 5
9
+ version: 0.1.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Claudio Bustos
@@ -95,6 +95,7 @@ files:
95
95
  - lib/rserve/protocol/rexpfactory.rb
96
96
  - lib/rserve/rexp.rb
97
97
  - lib/rserve/rexp/double.rb
98
+ - lib/rserve/rexp/factor.rb
98
99
  - lib/rserve/rexp/genericvector.rb
99
100
  - lib/rserve/rexp/integer.rb
100
101
  - lib/rserve/rexp/language.rb
@@ -105,15 +106,18 @@ files:
105
106
  - lib/rserve/rexp/symbol.rb
106
107
  - lib/rserve/rexp/unknown.rb
107
108
  - lib/rserve/rexp/vector.rb
109
+ - lib/rserve/rfactor.rb
108
110
  - lib/rserve/rlist.rb
109
111
  - lib/rserve/talk.rb
110
112
  - spec/rserve_connection_spec.rb
111
113
  - spec/rserve_double_spec.rb
112
114
  - spec/rserve_integer_spec.rb
115
+ - spec/rserve_logical_spec.rb
113
116
  - spec/rserve_packet_spec.rb
114
117
  - spec/rserve_protocol_spec.rb
115
118
  - spec/rserve_rexp_spec.rb
116
119
  - spec/rserve_rexpfactory_spec.rb
120
+ - spec/rserve_rfactor_spec.rb
117
121
  - spec/rserve_spec.rb
118
122
  - spec/rserve_talk_spec.rb
119
123
  - spec/spec.opts
metadata.gz.sig CHANGED
Binary file