@@ -61,27 +61,14 @@ isrevertible(::Type{Map}) = true
61
61
62
62
_makename (snames, fun) = Symbol (join ([snames; nameof (fun)], " _" ))
63
63
64
- function preprocess (transform:: Map , table )
65
- cols = Tables. columns (table )
66
- names = Tables. columnnames (cols)
64
+ function applyfeat (transform:: Map , feat, prep )
65
+ cols = Tables. columns (feat )
66
+ onames = Tables. columnnames (cols)
67
67
68
68
colspecs = transform. colspecs
69
69
funs = transform. funs
70
70
targets = transform. targets
71
71
72
- map (colspecs, funs, targets) do colspec, fun, target
73
- snames = choose (colspec, names)
74
- newname = isnothing (target) ? _makename (snames, fun) : target
75
- columns = (Tables. getcolumn (cols, nm) for nm in snames)
76
- newcolumn = map (fun, columns... )
77
- newname => newcolumn
78
- end
79
- end
80
-
81
- function applyfeat (:: Map , feat, prep)
82
- cols = Tables. columns (feat)
83
- onames = Tables. columnnames (cols)
84
-
85
72
# new names and columns
86
73
names = collect (onames)
87
74
columns = Any[Tables. getcolumn (cols, nm) for nm in onames]
@@ -90,7 +77,16 @@ function applyfeat(::Map, feat, prep)
90
77
rnames = empty (names)
91
78
rcolumns = empty (columns)
92
79
93
- for (name, column) in prep
80
+ # mapped columns
81
+ mapped = map (colspecs, funs, targets) do colspec, fun, target
82
+ snames = choose (colspec, names)
83
+ newname = isnothing (target) ? _makename (snames, fun) : target
84
+ scolumns = (Tables. getcolumn (cols, nm) for nm in snames)
85
+ newcolumn = map (fun, scolumns... )
86
+ newname => newcolumn
87
+ end
88
+
89
+ for (name, column) in mapped
94
90
if name ∈ onames
95
91
push! (rnames, name)
96
92
i = findfirst (== (name), onames)
0 commit comments