View source: R/convert_to_numeric_if_ok.R
convert_to_numeric_if_ok | R Documentation |
Attempt to convert a vector to numeric. Handles trimming, coercion, and optionally notifies of conversion success/failure. The code below is written by ChatGPT for the most part.
convert_to_numeric_if_ok(x, verbose = TRUE, strict = TRUE)
x |
A vector to attempt to convert. |
verbose |
Logical. Should messages about conversion be shown? Default = TRUE. |
strict |
Logical. If TRUE, return original vector if any values fail. If FALSE, returns numeric vector with NAs where conversion fails. Default = TRUE. |
A numeric vector, or the original input if strict=TRUE and conversion fails.
# Successful conversions from character
convert_to_numeric_if_ok(c("123", " 456 ", "-78.9", "+0.5", "1e3"))
convert_to_numeric_if_ok(c("Inf", "-Inf", "NaN")) # special values
# Input is already numeric
convert_to_numeric_if_ok(1:3) # returns same vector
# Logical input (TRUE = 1, FALSE = 0)
convert_to_numeric_if_ok(c(TRUE, FALSE))
# Mixed types are coerced before entering function
convert_to_numeric_if_ok(c(1, "2")) # actually character vector
# Factor input (coerced to character first)
convert_to_numeric_if_ok(factor(c("1", "2", "bad"))) # includes one invalid
# Partial failure with default strict = TRUE (returns original)
convert_to_numeric_if_ok(c("1", "a", "3"))
# Partial failure with strict = FALSE (returns numeric with NA)
convert_to_numeric_if_ok(c("1", "a", "3"), strict = FALSE)
# Suppress all messages
convert_to_numeric_if_ok(
c("1", "a", "3"), strict = FALSE, verbose = FALSE)
# Edge cases: whitespace, empty strings, missing values
convert_to_numeric_if_ok(c("", " ", "\t\n", NA))
convert_to_numeric_if_ok(c("NA", NA)) # "NA" as string vs NA
# All invalid inputs (strict = FALSE)
convert_to_numeric_if_ok(c("abc", "$100", "1.2.3"), strict = FALSE)
# Mixed sanity test vector
crazy_vec <- c(
"123", " 456 ", "-78.9", "+0.5", "1e-3", # valid
"1.2.3", "abc123", "$100", "NaN", "Inf", # mixed
"-Inf", "TRUE", "", " ", "\t\n", NA # edge + invalid
)
convert_to_numeric_if_ok(crazy_vec, strict = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.