@@ -52,18 +52,17 @@ _newnames(::Nothing, select) = select
52
52
_newnames (names:: Vector{Symbol} , select) = names
53
53
54
54
function applyfeat (transform:: Select , feat, prep)
55
- # original columns
56
55
cols = Tables. columns (feat)
56
+ names = collect (Tables. columnnames (cols))
57
57
58
58
# retrieve relevant column names
59
- allcols = collect (Tables. columnnames (cols))
60
- select = transform. selector (allcols)
61
- names = _newnames (transform. newnames, select)
62
- reject = setdiff (allcols, select)
59
+ select = transform. selector (names)
60
+ reject = setdiff (names, select)
61
+ newnames = _newnames (transform. newnames, select)
63
62
64
63
# keep track of indices to revert later
65
- sinds = indexin (select, allcols )
66
- rinds = indexin (reject, allcols )
64
+ sinds = indexin (select, names )
65
+ rinds = indexin (reject, names )
67
66
68
67
# sort indices to facilitate reinsertion
69
68
sperm = sortperm (sinds)
@@ -72,18 +71,16 @@ function applyfeat(transform::Select, feat, prep)
72
71
rcolumns = [Tables. getcolumn (cols, name) for name in reject]
73
72
74
73
fcache = (select, sperm, reject, rcolumns, rinds)
75
- newfeat = TableSelection (feat, names , select)
74
+ newfeat = TableSelection (feat, newnames , select)
76
75
newfeat, fcache
77
76
end
78
77
79
78
function revertfeat (:: Select , newfeat, fcache)
80
- # selected columns
81
79
cols = Tables. columns (newfeat)
82
80
names = Tables. columnnames (cols)
83
81
# https://github.com/JuliaML/TableTransforms.jl/issues/76
84
82
columns = Any[Tables. getcolumn (cols, name) for name in names]
85
83
86
- # rejected columns
87
84
select, sperm, reject, rcolumns, rinds = fcache
88
85
89
86
# restore rejected columns
@@ -136,9 +133,9 @@ isrevertible(::Type{<:Reject}) = true
136
133
137
134
function applyfeat (transform:: Reject , feat, prep)
138
135
cols = Tables. columns (feat)
139
- allcols = Tables. columnnames (cols)
140
- reject = transform. selector (allcols )
141
- select = setdiff (allcols , reject)
136
+ names = Tables. columnnames (cols)
137
+ reject = transform. selector (names )
138
+ select = setdiff (names , reject)
142
139
strans = Select (select)
143
140
newfeat, sfcache = applyfeat (strans, feat, prep)
144
141
newfeat, (strans, sfcache)
0 commit comments