Carlos Zelada
5 de Octubre 2016
En R se pueden asignar variables de dos forma x = 1 y x <- 1. La diferencia es que <- puede ser usado en cualquier parte del código y = solo puede ser usado en nivel superior, es decir en la linea de comando. Nosotros para este curso usaremos siempre <-.
x<-10 ##asignamos 10 a x
x
[1] 10
x<-3 ##asignamos 3 a x
y<-2 ##asignamos 2 a y
x+y
[1] 5
| clase | Descripción |
|---|---|
| Character | texto |
| Complex | Numero complejo |
| numeric | Un numero real |
| integer | Un numero entero |
| logical | booleano |
Para revisar de que clase es una variable se usa la función class().
x1<-"¡hola mundo!"
class(x1)
[1] "character"
x2<-1+1i
class(x2)
[1] "complex"
x3<- -1.5
class(x3)
[1] "numeric"
x4<-5L
class(x4)
[1] "integer"
x5<-TRUE
class(x5)
[1] "logical"
x6<-F
class(x6)
[1] "logical"
?':'
: 1:10
[1] 1 2 3 4 5 6 7 8 9 10
pi:9.5
[1] 3.141593 4.141593 5.141593 6.141593 7.141593 8.141593 9.141593
3:50
[1] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[24] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
[47] 49 50
También podemos crear vectores usando la función c().
c(1,2,15,7)
[1] 1 2 15 7
c(TRUE, FALSE, FALSE, TRUE)
[1] TRUE FALSE FALSE TRUE
c("h","o","l","a")
[1] "h" "o" "l" "a"
También podemos crear vectores con la función seq().
seq(0, 1, length.out = 11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
seq(1, 9, by = 2)
[1] 1 3 5 7 9
seq(1, 9, by = pi)
[1] 1.000000 4.141593 7.283185
seq(1, 6, by = 3)
[1] 1 4
seq(1.575, 5.125, by = 0.05)
[1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025 2.075
[12] 2.125 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525 2.575 2.625
[23] 2.675 2.725 2.775 2.825 2.875 2.925 2.975 3.025 3.075 3.125 3.175
[34] 3.225 3.275 3.325 3.375 3.425 3.475 3.525 3.575 3.625 3.675 3.725
[45] 3.775 3.825 3.875 3.925 3.975 4.025 4.075 4.125 4.175 4.225 4.275
[56] 4.325 4.375 4.425 4.475 4.525 4.575 4.625 4.675 4.725 4.775 4.825
[67] 4.875 4.925 4.975 5.025 5.075 5.125
seq(17) # lo mismo que 1:17, o todavia mejor seq_len(17)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
La función c() se puede usar para combinar vectores.
x<-c(1,2,3)
y<-c("a","b","c","d")
z<-c(x,y)
z
[1] "1" "2" "3" "a" "b" "c" "d"
Note que el primer vector era de clase numeric y el segundo vector clase character y el vector que nos devolvió R es de clase character.
A esto se le llama coerción y R tiene predeterminadas ciertas coerciones.
Esto es por que todos los elementos de un vector tienen que tener la misma clase, mas adelante aprenderemos lo que es una lista y esta si permite tener diferentes tipos de clases en un arreglo.
x<-c(1,2,3)
class(x)
[1] "numeric"
y<-c("a","b","c","d")
class(y)
[1] "character"
z<-c(x,y)
class(z)
[1] "character"
z
[1] "1" "2" "3" "a" "b" "c" "d"
Definamos los siguientes vectores,
x<-1:5
y<-c(10,20,30,40,50)
3*x
[1] 3 6 9 12 15
(1/10)*y
[1] 1 2 3 4 5
x+y
[1] 11 22 33 44 55
x-y
[1] -9 -18 -27 -36 -45
x*y
[1] 10 40 90 160 250
x/y
[1] 0.1 0.1 0.1 0.1 0.1
Note que todas las operaciones son de componente con componente.
Si se operan dos vectores de diferentes logitudes el vector mas pequeño se opera varias veces sobre el mas grande.
a<-c(0,1)
b<-1:15
a*b
[1] 0 2 0 4 0 6 0 8 0 10 0 12 0 14 0
y
[1] 10 20 30 40 50
y[2]
[1] 20
y[-2]
[1] 10 30 40 50
y[10]
[1] NA
y
[1] 10 20 30 40 50
y[c(2,3)]
[1] 20 30
y[c(2,3,2)]
[1] 20 30 20
y[c(3,2,1)]
[1] 30 20 10
y[2:4]
[1] 20 30 40
s <- c("aa", "bb", "cc", "dd", "ee")
L <- c(FALSE, TRUE, FALSE, TRUE, FALSE)
s[L]
[1] "bb" "dd"
v <- c("Maria", "Perez")
names(v)
NULL
names(v)<-c("nombre","apellido")
v
nombre apellido
"Maria" "Perez"
v["apellido"]
apellido
"Perez"
a<-2:5
b<-c("carlos","sandra","maria","luis")
c<-c(TRUE,FALSE,FALSE,TRUE)
lista<-list(a,b,c)
lista
[[1]]
[1] 2 3 4 5
[[2]]
[1] "carlos" "sandra" "maria" "luis"
[[3]]
[1] TRUE FALSE FALSE TRUE
lista[1]
[[1]]
[1] 2 3 4 5
lista[c(2,3)]
[[1]]
[1] "carlos" "sandra" "maria" "luis"
[[2]]
[1] TRUE FALSE FALSE TRUE
lista[[2]]
[1] "carlos" "sandra" "maria" "luis"
lista[[2]][2]
[1] "sandra"
a<-2:5
b<-c("carlos","sandra","maria","luis")
c<-c(TRUE,FALSE,FALSE,TRUE)
lista<-list(codigo=a,nombre=b,ingles=c)
lista
$codigo
[1] 2 3 4 5
$nombre
[1] "carlos" "sandra" "maria" "luis"
$ingles
[1] TRUE FALSE FALSE TRUE
lista$nombre
[1] "carlos" "sandra" "maria" "luis"
lista$ingles
[1] TRUE FALSE FALSE TRUE
lista$codigo
[1] 2 3 4 5
names(lista)
[1] "codigo" "nombre" "ingles"
names(lista)<-c("cod","nom","ing")
lista
$cod
[1] 2 3 4 5
$nom
[1] "carlos" "sandra" "maria" "luis"
$ing
[1] TRUE FALSE FALSE TRUE