r-lib / vctrs

Generic programming with typed R vectors
https://vctrs.r-lib.org
Other
285 stars 66 forks source link

Can `vec_math()` implement `round()` and `signif()`? #1389

Open davidchall opened 3 years ago

davidchall commented 3 years ago

Reading around this topic, it appears round() and signif() can either be implemented via the Math S3 group generic or the Math2 S4 group generic. {vctrs} implements the S3 generic via vec_math(): https://github.com/r-lib/vctrs/blob/faccc3aa6d8772a8cbc32b1d254b745685d3c4ff/R/type-vctr.R#L555-L558

However, the documented list of functions supported by vec_math() appears to be those supported by the Math S4 group generic (which excludes round() and signif()): https://github.com/r-lib/vctrs/blob/5eecfee07c6b231f29358b6883cee4c9e7f24576/R/numeric.R#L16-L22

Please can you clarify if vec_math() should be used to implement round() and signif()? Initial testing shows that it works, but I'm not sure if there are any caveats (e.g. how to pass additional arguments)?

krlmlr commented 2 years ago

I see round and signif mentioned in ?groupGeneric. Source location: https://github.com/r-devel/r-svn/blob/ecff5c591f8b1cfa80c0055c1c6da430481e804b/src/main/arithmetic.c#L1589-L1590 .

I suspect you'll be seeing the extra arguments in the ellipsis, does it work when you add them to the signature?

Perhaps we should add pointers to the documentation.