1
1
import { promoteArray , flatten , unique , multiplexer } from './helpers' ;
2
- import { seq_len , repInt , isOrdered } from './public' ;
2
+ import { rep_len , seq_len , repInt , isOrdered } from './public' ;
3
3
import { FactorType } from './types' ;
4
4
import { getLogger } from './logger' ;
5
5
import { Renhance , $jsArray , $class , $fact , $levels , $buildIn , UseMethod , $ordered } from './s3' ;
@@ -30,38 +30,39 @@ _factor[$jsArray] = function factorDefault(x: FactorType[], levels: FactorType[]
30
30
}
31
31
32
32
const _levels = promoted . filter ( ( v , i , arr ) => v !== null && ! arr . includes ( v , i + 1 ) ) ;
33
- const flatLab = ( labels !== levels ) ? flatten ( labels ) . map ( v => promoCode ( v ) ) : [ ] ;
33
+ const flatLab = ( labels !== levels ) ? unique ( flatten ( labels ) ) : [ ] ;
34
34
35
- if ( flatLab . length && flatLab . length !== _levels . length ) {
35
+ if ( flatLab . length && flatLab . length < _levels . length ) {
36
36
logger . errorAndThrow ( Error , `invalid labels; length ${ labels . length } should be 1 or ${ _levels . length } ` )
37
37
}
38
38
39
39
// optional reformatting of data
40
40
//
41
41
if ( flatLab . length ) {
42
42
//construct mapper
43
- const mapper = multiplexer ( < any > flatLab , < any > _levels )
44
- ( ( lab , lev ) => [ lev , lab ] )
43
+ const mapper1 = multiplexer ( < any > flatLab , < any > _levels )
44
+ ( ( lab , lev ) => ( { lv :lev , la : lab } ) )
45
+ const mapper2 = mapper1
45
46
. reduce ( ( coll : { [ index : string ] : any } , v ) => {
46
- coll [ v [ 0 ] ] = v [ 1 ] ;
47
+ coll [ v . lv ] = v . la ;
47
48
return coll ;
48
49
} , { } as { [ index : string ] : any } ) ;
49
50
50
51
for ( let i = 0 ; i < promoted . length ; i ++ ) {
51
- const pi = mapper [ < any > promoted [ i ] ]
52
+ const pi = mapper2 [ < any > promoted [ i ] ]
52
53
promoted [ i ] = pi ;
53
54
}
54
55
}
55
56
56
57
const obj = Renhance ( promoted , $buildIn ) ;
57
- obj [ $buildIn ] [ $levels ] = levels
58
+ obj [ $buildIn ] [ $levels ] = flatLab . length ? flatLab : _levels
58
59
obj [ $buildIn ] [ $class ] = ordered ? [ $ordered , $fact ] : [ $fact ]
59
60
60
61
return obj ;
61
62
}
62
63
63
- export function gl ( n : number , k : number , length : number = n * k , labels = seq_len ( n ) , ordered = false ) {
64
- const data = seq_len ( repInt ( seq_len ( n ) , repInt ( k , n ) ) , length )
64
+ export function gl ( n : number , k : number , length : number = n * k , labels : FactorType [ ] = seq_len ( n ) , ordered = false ) {
65
+ const data = rep_len ( repInt ( seq_len ( n ) , repInt ( k , n ) ) , length )
65
66
const fac = _factor ( data , undefined , labels , undefined , ordered )
66
67
return fac ;
67
68
}
@@ -70,7 +71,7 @@ export function gl(n: number, k: number, length: number = n * k, labels = seq_le
70
71
### factors
71
72
### levels
72
73
```R
73
- base::gl #Generate factors by specifying the pattern of their levels._
74
+ xx base::gl #Generate factors by specifying the pattern of their levels._
74
75
base::Ops.ordered
75
76
base::addNA
76
77
base::[<-.factor
@@ -91,9 +92,9 @@ base::is.na<-.factor
91
92
base::ordered
92
93
base::all.equal.factor
93
94
base::levels
94
- base::is.ordered
95
+ xx base::is.ordered
95
96
base::levels.default
96
- base::factor
97
+ xx base::factor
97
98
base::nlevels
98
99
base::Summary.ordered
99
100
base::as.ordered
0 commit comments