Kenneth Cabrera
miércoles, 18 de septiembre de 2019
El R tiene como clases de objetos básicos o “atómicos”
El objeto más básico es un vector.
vector()
L
.Inf
, representa el infinito.NA
es un valor faltante (“Not Available”)NaN
es un valor no definido (“Not a Number”).Un objeto en R puede tener atributos como:
names
, dimnames
).dim
).class
).length
).Se utiliza la función attribute()
para inspeccionarlos.
El símbolo <-
es el operador de asignación. También
se utiliza ->
para realizar la asignación de izquierda a
derecha.
x <- 1
print(x)
[1] 1
45 -> y
print(y)
[1] 45
x <- 1:20
x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
El operador dos puntos (:
) crea secuencias.
x <- c(0.5, 0.6) ## numérico
class(x)
[1] "numeric"
x <- c(TRUE, FALSE) ## lógico
x <- c(TRUE, FALSE) ## lógico
x <- c("a", "b", "c") ## alfanumérico, carácter, sarta.
x <- c(0.5, 0.6) ## numérico
x <- 9:29 ## entero
x <- c(1+0i, 2+4i) ## complejo
# Uso de la función vector().
x <- vector("numeric", length = 10)
x
[1] 0 0 0 0 0 0 0 0 0 0
x <- 1
class(x)
[1] "numeric"
x <- 1L
class(x)
[1] "integer"
y <- c(1.7, "a")
y <- c(TRUE, 2)
y <- c("a", TRUE)
x <- 0:6
class(x)
[1] "integer"
as.numeric(x)
[1] 0 1 2 3 4 5 6
as.logical(x)
[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE
x <- 0:6
as.character(x)
[1] "0" "1" "2" "3" "4" "5" "6"
as.complex(x)
[1] 0+0i 1+0i 2+0i 3+0i 4+0i 5+0i 6+0i
x <- c("a", "b", "c")
as.numeric(x)
[1] NA NA NA
as.logical(x)
[1] NA NA NA
as.complex(x)
[1] NA NA NA
m <- matrix(nrow = 2, ncol = 3)
m
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
dim(m)
[1] 2 3
attributes(m)
$dim
[1] 2 3
m <- matrix(1:6, nrow = 2, ncol = 3)
m
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
m <- 1:10
m
[1] 1 2 3 4 5 6 7 8 9 10
dim(m) <- c(2, 5)
m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
x <- 1:3
y <- 10:12
cbind(x, y)
x y
[1,] 1 10
[2,] 2 11
[3,] 3 12
rbind(x, y)
[,1] [,2] [,3]
x 1 2 3
y 10 11 12
x <- list(1, "a", TRUE, 1 + 4i)
x
[[1]]
[1] 1
[[2]]
[1] "a"
[[3]]
[1] TRUE
[[4]]
[1] 1+4i
Los factores se usan para representar variables categóricas. Pueden ser ordenados o no ordenados. Y se pueden asimilar a un vector donde cada categoría tiene una etiqueta.
lm()
y glm()
.x <- factor(c("si", "si", "no", "si", "no"))
levels(x)
[1] "no" "si"
unclass(x)
[1] 2 2 1 2 1
attr(,"levels")
[1] "no" "si"
x <- factor(c("si", "si", "no", "si", "no"))
as.numeric(x)
[1] 2 2 1 2 1
x <- factor(x, levels = c("si","no"))
levels(x)
[1] "si" "no"
as.numeric(x)
[1] 1 1 2 1 2
is.na()
Se usa para probar si los objetos son NA
.is.nan()
para los valores NaN
.NA
existen tantos numéricos NA
como de sarta <NA>
.NaN
es NA
pero no al contrario.x <- c(1, 2, NA, 10, 3, 0/0, 3/0, log(0))
is.na(x)
[1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
data.frame
permiten
tipos distintos para cada columna. En las matrices
todos son de la misma clase.data.frame
tienen atributos como row.names
.read.table()
o
read.csv()
.data.matrix()
.x <- data.frame(foo = 1:4, bar = c(T, T, F, F))
x
foo bar
1 1 TRUE
2 2 TRUE
3 3 FALSE
4 4 FALSE
nrow(x)
[1] 4
ncol(x)
[1] 2
x <- 1:3
names(x)
NULL
names(x) <- c("foo", "bar", "norf")
x
foo bar norf
1 2 3
names(x)
[1] "foo" "bar" "norf"
x <- list(a = 1, b = 2, c = 3)
x
$a
[1] 1
$b
[1] 2
$c
[1] 3
m <- matrix(1:4, nrow = 2, ncol = 2)
m
[,1] [,2]
[1,] 1 3
[2,] 2 4
dimnames(m) <- list(c("a", "b"),c("c", "d"))
m
c d
a 1 3
b 2 4
[
Siempre devuelve un objeto de la misma clase que el original.[[
Es usado para extraer los elementos de una lista.
Sólo para extraer un elmento de la lista. Lo que devuelve
puede ser de distinto tipo al de la lista o el data.frame
.$
se usa para extraer elementos de una lista o data.frame
.
Semánticamente es similar a [[
.x <- c("a", "b", "c", "c", "d", "a")
x[1]
[1] "a"
x[2]
[1] "b"
x[1:4]
[1] "a" "b" "c" "c"
x <- c("a", "b", "c", "c", "d", "a")
x > "a"
[1] FALSE TRUE TRUE TRUE TRUE FALSE
x[x > "a"]
[1] "b" "c" "c" "d"
u <- x > "a"
x[u]
[1] "b" "c" "c" "d"
x <- matrix(6:1, 2, 3)
x[1, 2]
x[2, 1]
x[1,]
x[,2]
x <- matrix(6:1, 2, 3)
x[1, 2]
x[1, 2, drop = FALSE]
x <- matrix(6:1, 2, 3)
x[1, ]
x[1, , drop = FALSE]
x <- list(foo = 6:1, bar = 0.6)
x[1]
$foo
[1] 6 5 4 3 2 1
x[[1]]
[1] 6 5 4 3 2 1
x$bar
[1] 0.6
x[["bar"]]
[1] 0.6
x["bar"]
$bar
[1] 0.6
x <- list(foo = 6:1, bar = 0.6, baz = "hello")
x[c(1,3)]
$foo
[1] 6 5 4 3 2 1
$baz
[1] "hello"
x <- list(foo = 6:1, bar = 0.6, baz = "hello")
nombre <- "foo"
x[[nombre]]
[1] 6 5 4 3 2 1
x$nombre
NULL
x$foo
[1] 6 5 4 3 2 1
x <- list(a = list(10, 12, 14), b = c(3.14, 2.81))
x[[c(1,3)]]
[1] 14
x[[1]][[3]]
[1] 14
x[[c(2,1)]]
[1] 3.14