R
Beginner
1 min read
R Data Types and Type Coercion
Example
# Atomic types
dbl <- 3.14 # numeric / double
int <- 5L # integer
cpx <- 2 + 3i # complex
chr <- "hello" # character
lgl <- FALSE # logical
raw_val <- as.raw(0x41) # raw (hex 0x41 = 65 = 'A')
cat(class(dbl), typeof(dbl), "\n") # numeric double
cat(class(int), typeof(int), "\n") # integer integer
cat(class(chr), typeof(chr), "\n") # character character
cat(class(lgl), typeof(lgl), "\n") # logical logical
# Implicit coercion hierarchy: logical < integer < double < character
mixed <- c(TRUE, 2L, 3.5) # all become double
cat(class(mixed), "\n") # "numeric"
mixed2 <- c(1, "two", TRUE) # all become character
cat(class(mixed2), "\n") # "character"
# Explicit coercion
as.integer(3.9) # 3 (truncates, does NOT round)
as.numeric("2.71") # 2.71
as.logical(0) # FALSE
as.logical(1) # TRUE
as.character(99) # "99"
# Special values
na_val <- NA
null_val <- NULL
nan_val <- NaN
inf_val <- Inf
is.na(na_val) # TRUE
is.null(null_val) # TRUE
is.nan(nan_val) # TRUE
is.infinite(inf_val) # TRUE
# NA propagates
5 + NA # NA
mean(c(1, 2, NA)) # NA
mean(c(1, 2, NA), na.rm = TRUE) # 1.5