Thanks for the contribution Mikko! For testing future patches, you can actually do it right in the web browser, thanks to Heather Turner's R Dev Container, see instructions here https://contributor.r-project.org/r-dev-env/container_setup/ Best Toby
On Mon, May 26, 2025 at 6:28 PM Martin Maechler <maech...@stat.math.ethz.ch> wrote: > Thank you, Marttila and Ivan, > > As the original author of prettyNum() {etc ..}, > I will commit such a bug fix to R-devel (and probably port it to > R 4.5.0 patched) quite soon > (but not yet today). > > Best regards, > > Martin Maechler > > >>>>> Ivan Krylov via R-devel > >>>>> on Fri, 23 May 2025 17:14:57 +0300 writes: > > > В Fri, 23 May 2025 11:47:33 +0000 > > Marttila Mikko via R-devel <r-devel@r-project.org> пишет: > > >> When called with a numeric vector, the `replace.zero` argument is > >> disregarded. > >> > >> > prettyNum(0, zero.print = "- ", replace.zero = TRUE) > >> [1] "-" > >> Warning message: > >> In .format.zeros(x, zero.print, replace = replace.zero) : > >> 'zero.print' is truncated to fit into formatted zeros; consider > >> 'replace=TRUE' > > >> Please see below a patch which I believe would fix this. > > > Surprisingly, it's not enough. The 'replace' argument to > .format.zeros > > needs to be "threaded" through both the call to vapply(x, format, > ...) > > and the internal call from format.default(...) to prettyNum(...): > > R> options(warn = 2, error = recover) > R> prettyNum(0, zero.print = "--", replace.zero = TRUE) > > Error in .format.zeros(x, zero.print, replace = replace.zero) : > > (converted from warning) 'zero.print' is truncated to fit into > formatted zeros; consider 'replace=TRUE' > > > Enter a frame number, or 0 to exit > > > 1: prettyNum(0, zero.print = "--", replace.zero = TRUE) > > 2: vapply(x, format, "", big.mark = big.mark, big.interval = > big.interval, sma > > 3: FUN(X[[i]], ...) > > 4: format.default(X[[i]], ...) > > 5: prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3, > na.encode, sc > > 6: .format.zeros(x, zero.print, replace = replace.zero) > > 7: warning("'zero.print' is truncated to fit into formatted zeros; > consider 'r > > <...omitted...> > > Selection: 6 > > <...> > > Browse[1]> ls.str() > > i0 : logi TRUE > > ind0 : int 1 > > nc : int 1 > > nx : num 0 > > nz : int 2 > > replace : logi FALSE > > warn.non.fitting : logi TRUE > > x : chr "0" > > zero.print : chr "--" > > > Since prettyNum() accepts ... and thus ignores unknown arguments, it > > seems to be safe to forward the ellipsis from format.default() to > > prettyNum(). The patch survives LANGUAGE=en TZ=UTC make check-devel. > > > Index: src/library/base/R/format.R > > =================================================================== > > --- src/library/base/R/format.R (revision 88229) > > +++ src/library/base/R/format.R (working copy) > > @@ -73,7 +73,7 @@ > > decimal.mark = decimal.mark, input.d.mark = decimal.mark, > > zero.print = zero.print, drop0trailing = drop0trailing, > > is.cmplx = is.complex(x), > > - preserve.width = if (trim) "individual" else > "common"), > > + preserve.width = if (trim) "individual" else > "common", ...), > > ## all others (for now): > > stop(gettextf("Found no format() method for class \"%s\"", > > class(x)), domain = NA)) > > @@ -338,7 +338,8 @@ > > big.mark=big.mark, big.interval=big.interval, > > small.mark=small.mark, small.interval=small.interval, > > decimal.mark=decimal.mark, zero.print=zero.print, > > - drop0trailing=drop0trailing, ...) > > + drop0trailing=drop0trailing, replace.zero=replace.zero, > > + ...) > > } > > ## be fast in trivial case, when all options have their default, or > "match" > > nMark <- big.mark == "" && small.mark == "" && (notChar || > decimal.mark == input.d.mark) > > > > -- > > Best regards, > > Ivan > > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel