2.3 Tipos de datos

En R existen 6 tipos de datos básicos:

  • Lógico (logical). Solamente tiene dos valores TRUE o FALSE y el tipo lógico especial NA para representar explícitamente valores faltantes o valores omitidos.
  • Entero (integer)
  • Numérico (numeric)
  • Caracteres (character)
  • Números complejos (complex)
  • Valores en bytes (`raw``)

No necesario especificar de forma explícita el tipo de datos de un objeto ya que R lo puede identificar automáticamente. Para conocer la clase a la que pertenece un objeto, se utiliza la función class()

num <- 88.66
class(num)
# [1] "numeric"
ent <- 80
class(ent)
# [1] "numeric"
ent <- 80L
class(ent)
# [1] "integer"

También podemos preguntar si un objeto es de alguna clase determinada

is.character(num)
# [1] FALSE
is.numeric(num)
# [1] TRUE"

Y convertir objetos de una clase a otra

as.numeric(TRUE)
# [1] "TRUE"
as.character(num)
# [1] "88.66"

Existen funciones que solamente pueden ser llamadas o ejecutadas con algún tipo específico de datos, ya que solo están definidas para ellos.

round(55.2)
# [1] 55
round("abc")
## Error in round("abc"): non-numeric argument to mathematical function

2.3.1 Operadores lógicos

Los operadores lógicos son muy importantes para la programación y tienen el mismo funcionamiento en todos los lenguajes de programación. Los resultados de utilizar los principales operandos: AND (&), OR (|) y NOT (!) pueden ilustrarse en una tabla de verdad

A B A|B A&B !A
FALSE FALSE FALSE FALSE TRUE
FALSE TRUE TRUE TRUE TRUE
TRUE FALSE TRUE FALSE FALSE
TRUE TRUE TRUE TRUE FALSE

2.3.2 Cadenas de caracteres

Una función muy útil cuando trabajamos con cadenas de caracteres es strsplit(), que nos separa texto dado algún caracter.

cadena <- "uno;dos;tres;cuatro;cinco"
strsplit(cadena, split = ";")
## [[1]]
## [1] "uno"    "dos"    "tres"   "cuatro" "cinco"

Y para concatenar caracteres, números, variables, etc, utilizamos paste() o paste0(). La primera acepta un separador para concatenar y paste0, simplemente concatena todo. Además, el argumento para el caracter separador depende de los elementos del primer argumento. Si son objetos por separado usamos sep en paste

paste("concatena", "palabras", "con", "espacios", sep = " ")
## [1] "concatena palabras con espacios"
paste0("El valor guardado fue ", num, ". Sumando ", 5, " da ", num + 5)
## [1] "El valor guardado fue 88.66. Sumando 5 da 93.66"

Pero si los enviamos como un vector, usamos el argumento collapse

paste(1:20, collapse = " ")
## [1] "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20"
paste0(c("El valor guardado fue ", num, ". Sumando ", 5, " da ", num + 5), collapse = "")
## [1] "El valor guardado fue 88.66. Sumando 5 da 93.66"