Skip to content

Fixed bug in format_sigfig() with trailing zeros for x < 0.1 - #1511

Closed
munoztd0 wants to merge 2 commits into
mainfrom
1510-bug-format_sigfig-adds-spurious-trailing-zero-via-flag-in-formatc
Closed

Fixed bug in format_sigfig() with trailing zeros for x < 0.1#1511
munoztd0 wants to merge 2 commits into
mainfrom
1510-bug-format_sigfig-adds-spurious-trailing-zero-via-flag-in-formatc

Conversation

@munoztd0

Copy link
Copy Markdown
Contributor

Pull Request

Fixes #1510

@munoztd0
munoztd0 requested review from iaugusty and a lite review from Copilot August 18, 2026 12:11
@munoztd0 munoztd0 linked an issue Aug 18, 2026 that may be closed by this pull request
3 tasks
@munoztd0 munoztd0 changed the title format_sigfig does not add trailing zeros for > 0.1 Fixed bug in format_sigfig() with trailing zeros for x < 0.1 Aug 18, 2026
@munoztd0
munoztd0 force-pushed the 1510-bug-format_sigfig-adds-spurious-trailing-zero-via-flag-in-formatc branch from c626c9e to 8bf4cb9 Compare August 18, 2026 12:16

This comment was marked as outdated.

@munoztd0
munoztd0 force-pushed the 1510-bug-format_sigfig-adds-spurious-trailing-zero-via-flag-in-formatc branch from 9fbb323 to 158a046 Compare August 18, 2026 12:21
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

badge

Code Coverage Summary

Filename                                   Stmts    Miss  Cover    Missing
---------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
R/abnormal_by_baseline.R                     101       3  97.03%   242, 244-245
R/abnormal_by_marked.R                        88       8  90.91%   94-98, 281, 283-284
R/abnormal_by_worst_grade.R                   94       3  96.81%   215, 217-218
R/abnormal_lab_worsen_by_baseline.R          159      10  93.71%   205-208, 213, 215-216, 459-461
R/abnormal.R                                  78       2  97.44%   222, 224
R/analyze_variables.R                        320      11  96.56%   593-596, 818-823, 831
R/analyze_vars_in_cols.R                     178      14  92.13%   178, 221, 235-236, 238, 246-254
R/bland_altman.R                              92       1  98.91%   46
R/combination_function.R                       9       0  100.00%
R/compare_variables.R                         35       0  100.00%
R/control_incidence_rate.R                    10       0  100.00%
R/control_logistic.R                           7       0  100.00%
R/control_step.R                              23       1  95.65%   58
R/control_survival.R                          16       0  100.00%
R/count_cumulative.R                         115       4  96.52%   74, 270-271, 273
R/count_missed_doses.R                        89       4  95.51%   206-209
R/count_occurrences_by_grade.R               169       8  95.27%   178, 386, 388, 465, 467, 469, 473-474
R/count_occurrences.R                        137      10  92.70%   119, 262-264, 330-332, 334, 338-339
R/count_patients_events_in_cols.R             67       1  98.51%   60
R/count_patients_with_event.R                 73       2  97.26%   220, 223
R/count_patients_with_flags.R                 93       2  97.85%   234, 236
R/count_values.R                              61       2  96.72%   193, 196
R/cox_regression_inter.R                     154       0  100.00%
R/cox_regression.R                           161       0  100.00%
R/coxph.R                                    165       7  95.76%   190-194, 236, 251, 259, 265-266
R/d_pkparam.R                                406       0  100.00%
R/decorate_grob.R                            116       0  100.00%
R/desctools_binom_diff.R                     621      64  89.69%   53, 88-89, 125-126, 129, 199, 223-232, 264, 266, 286, 290, 294, 298, 353, 356, 359, 362, 422, 430, 439, 444-447, 454, 457, 466, 469, 516-517, 519-520, 522-523, 525-526, 593, 604-616, 620, 663, 676, 680
R/df_explicit_na.R                            45       0  100.00%
R/estimate_multinomial_rsp.R                  86       4  95.35%   65, 212, 214-215
R/estimate_proportion.R                      240       7  97.08%   88, 99, 255, 257-258, 389, 553
R/fit_rsp_step.R                              36       0  100.00%
R/fit_survival_step.R                         36       0  100.00%
R/formatting_functions.R                     194       2  98.97%   141, 276
R/g_forest.R                                 591      56  90.52%   259, 273-274, 277, 283-284, 298, 300, 358-361, 368, 437, 524, 537, 541-542, 547-548, 561, 577, 624, 653, 728, 737, 743, 762, 817-837, 840, 851, 870, 925, 928, 1063-1068
R/g_ipp.R                                    133       0  100.00%
R/g_km.R                                     354      57  83.90%   285-288, 307-309, 363-366, 400, 428, 432-475, 482-486
R/g_lineplot.R                               261      22  91.57%   222, 397-404, 443-453, 562, 570
R/g_step.R                                    68       1  98.53%   108
R/g_waterfall.R                               47       0  100.00%
R/h_adsl_adlb_merge_using_worst_flag.R        73       0  100.00%
R/h_biomarkers_subgroups.R                    91      23  74.73%   40-42, 84-103
R/h_cox_regression.R                         110       0  100.00%
R/h_incidence_rate.R                          45       0  100.00%
R/h_km.R                                     510      39  92.35%   147, 199-204, 297, 388, 390-391, 402-404, 423, 430-431, 433-435, 443-445, 470, 475-478, 661-664, 1118-1127
R/h_logistic_regression.R                    468       3  99.36%   203-204, 273
R/h_map_for_count_abnormal.R                  54       0  100.00%
R/h_pkparam_sort.R                            15       0  100.00%
R/h_response_biomarkers_subgroups.R           77      12  84.42%   50-55, 107-112
R/h_response_subgroups.R                     178      18  89.89%   257-270, 329-334
R/h_stack_by_baskets.R                        64       1  98.44%   89
R/h_step.R                                   178       0  100.00%
R/h_survival_biomarkers_subgroups.R           73       6  91.78%   111-116
R/h_survival_duration_subgroups.R            207      18  91.30%   259-271, 336-341
R/imputation_rule.R                           17       0  100.00%
R/incidence_rate.R                           103       7  93.20%   68-73, 242
R/logistic_regression.R                      102       0  100.00%
R/missing_data.R                              26       5  80.77%   39, 62-63, 96, 106
R/odds_ratio.R                               157       4  97.45%   270-273
R/prop_diff_test.R                           197       2  98.98%   267, 269
R/prop_diff.R                                526      21  96.01%   97-101, 138, 341, 343, 429-436, 585, 910, 1082, 1086, 1089
R/prune_occurrences.R                         57       0  100.00%
R/response_biomarkers_subgroups.R            124      10  91.94%   88-91, 270-275
R/response_subgroups.R                       252      16  93.65%   100-105, 271-275, 280, 282-283, 310-311
R/riskdiff.R                                  65       4  93.85%   94-97
R/rtables_access.R                            38       0  100.00%
R/score_occurrences.R                         20       1  95.00%   124
R/split_cols_by_groups.R                      49       0  100.00%
R/stat.R                                      59       0  100.00%
R/summarize_ancova.R                         174       2  98.85%   355-356
R/summarize_change.R                          72       3  95.83%   175, 177-178
R/summarize_colvars.R                         13       1  92.31%   75
R/summarize_coxreg.R                         172       0  100.00%
R/summarize_glm_count.R                      269      10  96.28%   129-130, 202-203, 459-463, 596
R/summarize_num_patients.R                   121      10  91.74%   122-124, 244, 248, 252-253, 337-338, 340
R/summarize_patients_exposure_in_cols.R      155       7  95.48%   58, 232-233, 237, 357-358, 362
R/survival_biomarkers_subgroups.R            136      10  92.65%   117-122, 228-231
R/survival_coxph_pairwise.R                  154       9  94.16%   55-56, 124, 138, 145, 149, 288, 290-291
R/survival_duration_subgroups.R              250      15  94.00%   124-129, 268-273, 286, 288-289
R/survival_time.R                            128       1  99.22%   261
R/survival_timepoint.R                       153       2  98.69%   320, 322
R/utils_checkmate.R                           68       0  100.00%
R/utils_default_stats_formats_labels.R       201       0  100.00%
R/utils_factor.R                              87       1  98.85%   99
R/utils_ggplot.R                             110       0  100.00%
R/utils_grid.R                               126       5  96.03%   164, 279-286
R/utils_rtables.R                            125       9  92.80%   39, 46, 414-415, 537-541
R/utils_split_funs.R                          52       2  96.15%   82, 94
R/utils.R                                    141       7  95.04%   131, 134, 137, 141, 150-151, 345
TOTAL                                      12370     590  95.23%

Diff against main

Filename                    Stmts    Miss  Cover
------------------------  -------  ------  -------
R/formatting_functions.R       +4       0  +0.02%
TOTAL                          +4       0  +0.00%

Results for commit: 4ba21c6

Minimum allowed coverage is 80%

♻️ This comment has been updated with latest results

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Unit Test Performance Difference

Additional test case details
Test Suite $Status$ Time on main $±Time$ Test Case
formatting_functions 👶 $+0.03$ format_sigfig_does_not_add_trailing_zeros_for_x_0.1

Results for commit 4f9cb9a

♻️ This comment has been updated with latest results.

@iaugusty

Copy link
Copy Markdown
Collaborator

@munoztd0
I'm missing the rationale why trailing zeros need to be removed for values <0.1 and not for integers, or values >0.1.
Eg

fmt <- format_sigfig(3)
x <- c(5, 0.2, 0.1, 0.01)
fmt(x)

# "5.00"  "0.200" "0.100" "0.01" 

@iaugusty

Copy link
Copy Markdown
Collaborator

@munoztd0, @gmbecker
isn't the problem more due to format = "fg" rather than flag?
For

x <- c(5, 0.2, 0.1, 0.01, 0.1234567, 0.005)

shouldn't the expected result be

# "5.00"  "0.200" "0.100" "0.010" "0.123" "0.005"

ie for values <1 show fixed number of digits, ie format = "f", for values >=1, use format = "fg"

@munoztd0
munoztd0 marked this pull request as draft August 19, 2026 09:03
@munoztd0

Copy link
Copy Markdown
Contributor Author

@munoztd0, @gmbecker isn't the problem more due to format = "fg" rather than flag? For

x <- c(5, 0.2, 0.1, 0.01, 0.1234567, 0.005)

shouldn't the expected result be

# "5.00"  "0.200" "0.100" "0.010" "0.123" "0.005"

ie for values <1 show fixed number of digits, ie format = "f", for values >=1, use format = "fg"

Let' s discuss about it again

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Unit Tests Summary

    1 files     85 suites   1m 48s ⏱️
  936 tests   927 ✅   9 💤 0 ❌
2 333 runs  1 615 ✅ 718 💤 0 ❌

Results for commit 4ba21c6.

♻️ This comment has been updated with latest results.

@iaugusty

Copy link
Copy Markdown
Collaborator

indeed, I'm afraid we might be misinterpreting the meaning of significant figures in our discussion.

@munoztd0 munoztd0 closed this Aug 20, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: format_sigfig() adds spurious trailing zero via flag = "#" in formatC

3 participants