rserve-client 0.1.4 → 0.1.5

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