Atomic Vectors in R


Atomic vectors are the most basic data types in R. These are the building blocks of matrices, dataframes, and all of the other commonly used data structures. These are the four most important types of atomic vectors.


Data Types


Double - a number with a decimal


double <- c(1, 0.1, 1.0, 1.01)
is.double(double)

## [1] TRUE


Integer - a whole number


integer <- c(1L, 500L, 0L)
is.integer(integer)

## [1] TRUE


Logical - true or false


logical <- c(T, TRUE, F, FALSE)
is.logical(logical)

## [1] TRUE


Character - a string, or word


character <- c('string_1', "string 2", '345')
is.character(character)

## [1] TRUE


Coercion Rules

Coercion is forcing data from one type to another to make your calculation compatable. You can’t add 1 + ‘seven’, but you can add 1 + 7. Coercion rules are based on which data type retains the most information.


logical to numeric (double or integer)


mixed <- c(T, 1L)
typeof(mixed)

## [1] "integer"


integer to double

mixed <- c(1, 2L)
typeof(mixed)

## [1] "double"


everything to character


mixed_1 <- c('a', 1)
mixed_2 <- c(T, 'a')
mixed_3 <- c('a', 1L)

typeof(mixed_1)

## [1] "character"

typeof(mixed_2)

## [1] "character"

typeof(mixed_3)

## [1] "character"


Forcing Coersion

Some functions will force coersion on their own, this can be useful for counting.


example_log <- c(T, T, F)
example_num <- as.numeric(example_log)

example_num

## [1] 1 1 0


sum(example_log)

## [1] 2


mean(example_log)

## [1] 0.6666667


Other Useful Functions

Here are a few extra useful functions that may be useful when dealing with atomic vector structure.


class() 
length()
typeof()
attributes()


That’s all for now!

- Fisher



Comments