Andrea Gilardi
2024-Mar-29 17:56 UTC
[Rd] Question regarding .make_numeric_version with non-character input
Dear all,
I have a question regarding the R-devel version of .make_numeric_version()
function. As far as I can understand, the current code
(https://github.com/wch/r-source/blob/66b91578dfc85140968f07dd4e72d8cb8a54f4c6/src/library/base/R/version.R#L50-L56)
runs the following steps in case of non-character input:
1. It creates a message named msg using gettextf.
2. Such object is then passed to stop(msg) or warning(msg) according to the
following condition
tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_")
!= "false")
However, I don't understand the previous code since the output of
Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_") !=
"false" is just a boolean value and tolower() will just return
"true" or "false". Maybe the intended code is
tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_"))
!= "false" ? Or am I missing something?
Thank you very much for your help
Kind regards
Andrea
Dirk Eddelbuettel
2024-Mar-29 19:14 UTC
[Rd] Question regarding .make_numeric_version with non-character input
On 29 March 2024 at 17:56, Andrea Gilardi via R-devel wrote:
| Dear all,
|
| I have a question regarding the R-devel version of .make_numeric_version()
function. As far as I can understand, the current code
(https://github.com/wch/r-source/blob/66b91578dfc85140968f07dd4e72d8cb8a54f4c6/src/library/base/R/version.R#L50-L56)
runs the following steps in case of non-character input:
|
| 1. It creates a message named msg using gettextf.
| 2. Such object is then passed to stop(msg) or warning(msg) according to the
following condition
|
|
tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_")
!= "false")
|
| However, I don't understand the previous code since the output of
Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_") !=
"false" is just a boolean value and tolower() will just return
"true" or "false". Maybe the intended code is
tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_"))
!= "false" ? Or am I missing something?
Yes, agreed -- good catch. In full, the code is (removing leading
whitespace, and putting it back onto single lines)
msg <- gettextf("invalid non-character version specification
'x' (type: %s)", typeof(x))
if(tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_")
!= "false"))
stop(msg, domain = NA)
else
warning(msg, domain = NA, immediate. = TRUE)
where msg is constant (but reflecting language settings via standard i18n)
and as you not the parentheses appear wrong. What was intended is likely
msg <- gettextf("invalid non-character version specification
'x' (type: %s)", typeof(x))
if(tolower(Sys.getenv("_R_CHECK_STOP_ON_INVALID_NUMERIC_VERSION_INPUTS_"))
!= "false")
stop(msg, domain = NA)
else
warning(msg, domain = NA, immediate. = TRUE)
If you use bugzilla before and have a handle, maybe file a bug report with
this as patch at https://bugs.r-project.org/
Dirk
--
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org