JamesHWade / measure

The goal of measure is to be a recipes-like interface to tidymodels for analytical characterization data.
https://jameshwade.github.io/measure/
Other
5 stars 2 forks source link

Use custom class in internal representation #16

Open EmilHvitfeldt opened 9 months ago

EmilHvitfeldt commented 9 months ago

Great package!

I would recommend that you use a custom class internally to handle the measure column. It doesn't have to do much, just enough that you can do inherits(x, "measure_obj"). This will save you some headache in the long run.

So steps like step_measure_input_*() produces this class type. This automatically gives the benefit that you don't have to worry about name clashes as it is dependent on the class, not name of column.

All the remaining steps can then use the class.

A function like check_has_measure() can do any(inherits(x, "measure_obj")). You also get the flexibility to easily have multiple measure columns, as talked about in https://github.com/JamesHWade/measure/issues/13.

JamesHWade commented 9 months ago

Thank you for the suggestion! I'll give that a try.

topepo commented 9 months ago

We were talking about this in our group meeting (and I think I discussed it with Hadley). If we make a specialized vector class, we could also give the vector a slot that contains all possible location (i.e. x) values across all of the samples. This would be sort of like how a factor keeps all possible factor levels.

The vctrs package makes it fairly easy to do (here is an example).