Está en la página 1de 6

Asignación de valores a variables

> X <- 3
> X
[1] 3
> X = 4
> X
[1] 4
> 3 -> X
> X
[1] 3
La creación de un vector en R y la consulta de ello se realiza de
la siguiente forma
> datos <- c(4, 2, 4, 5)
> n <- length(datos)
> datos
[1] 4 2 4 5
> n
[1] 4
> min(datos)
[1] 2
> max(datos)
[1] 5
> sum(datos)
[1] 15
> ord <- sort(datos)
> ord[1]
[1] 2
> ord[n]
[1] 5
Otras rutinas útiles para analizar vectores son las siguientes:
> data <- c(1, 4, 2, 4, 2, 5, 6, 7, 4, 76, 3, 2, 5, 6, 7)
> mean(data)
[1] 8.933333
> median(data)
[1] 4
> summary(data)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
1.000   2.500   4.000   8.933   6.000  76.000
> quantile(data, 0.9)
90%
7
> table(data)
data
1  2  3  4  5  6  7 76
1  3  1  3  2  2  2  1
> var(data)
[1] 347.781
> sd(data)
[1] 18.64889
> otra <- c(1, 5, 3, 5, 3, 65, 4, 6, 3, 6, 3, 56, 4)
> length(otra)
[1] 13
> length(data)
[1] 15
> otra <- c(otra, 2, 4)
> cor(data, otra)
[1] -0.08119101
Para crear una matriz
> M <- matrix(rep(0, 9), nrow=3, ncol=3)
> M
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0
Subrutina all y any
> a <- c(1, 2, 3)
> b <- c(1, 2, 4)
> a == b
[1] TRUE TRUE FALSE
> all(a == b)
[1] FALSE
> any(a == b)
[1] TRUE
Operaciones aritmeticas
> a <- 3
> b <- 4
> c <- c(5, 6, 7)
> d <- c(8, 10, 12)
> a + b
[1] 7
> a - b
[1] -1
> a * b
[1] 12
> a / b
[1] 0.75
> a^b
[1] 81
> b^a
[1] 64
> a**b
[1] 81
> a + c
[1]  8  9 10
> c + d
[1] 13 16 19
> c * d
[1] 40 60 84
> c %*% d
[,1]
[1,]  184
> e <- matrix(c(1, 2, 3, 4), nrow=2)
> e
[,1] [,2]
[1,]    1    3
[2,]    2    4
> f <- matrix(c(2, 4, 6, 8), nrow=2)
> f
[,1] [,2]
[1,]    2    6
[2,]    4    8
> e + f
[,1] [,2]
[1,]    3    9
[2,]    6   12
> e - f
[,1] [,2]
[1,]   -1   -3
[2,]   -2   -4
> e * f
[,1] [,2]
[1,]    2   18
[2,]    8   32
> e %*% f
[,1] [,2]
[1,]   14   30
[2,]   20   44
El redondeo de enteros a decimales se hace con las tres reglas:
hacia abajo con la función piso floor, hacia arriba con la función
techo ceiling y al entero más cercano con round. La división
entera se logra con %/% y el residuo (también llamado modulo, que
en R funciona hasta con valores decimales) con %%:
> d <- 7.3
> floor(d)
[1] 7
> ceiling(d)
[1] 8
> round(d)
[1] 7
> d / 2
[1] 3.65
> d %/% 2
[1] 3
> d %% 2
[1] 1.3
Las funciones matemáticas tienen sus nombres típicos y están disponibles en R
básico
> x <- 123.4
> sqrt(x)
[1] 11.10856
> exp(x)
[1] 3.907861e+53
> sin(x)
[1] -0.7693905
> cos(x)
[1] -0.6387787
> tan(x)
[1] 1.204471
> tanh(2.5)
[1] 0.9866143
> log(x)
[1] 4.815431
> log(x, 10)
[1] 2.091315
> log(x, 2)
[1] 6.947199
Para permutaciones y combinaciones, existen subrutinas para la factorial y el
coeficiente binomial:
> factorial(5)
[1] 120
> choose(9, 3)
[1] 84
> factorial(9) / (factorial(6) * factorial(3))
[1] 84
Para manipular secuencias, existen las siguientes subrutinas prácticas
> s <- seq(4, 100, 2)
> s
[1]   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38  4
0
[20]  42  44  46  48  50  52  54  56  58  60  62  64  66  68  70  72  74  76  
78
[39]  80  82  84  86  88  90  92  94  96  98 100
> r <- rep(13, 20)
> r
[1] 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
> i <- 2:12
> i
[1]  2  3  4  5  6  7  8  9 10 11 12
> c <- cut(s, breaks=4)
> table(c)
c
(3.9,28]  (28,52]  (52,76] (76,100]
      13       12       12       12
> tail(s)
[1]  90  92  94  96  98 100
> tail(s, 10)
[1]  82  84  86  88  90  92  94  96  98 100
> head(s)
[1]  4  6  8 10 12 14
> head(s, 8)
[1]  4  6  8 10 12 14 16 18
Para expresiones condicionales, repeticiones, y lógica, sirve lo siguiente:
> x <- 3
> y <- NULL
> if (x > 5) { y <- x * 3 } else { y <- 6 - x }
> y
[1] 3
> z <- NULL
> if (x %% 2 == 1 & y %% 2 == 1) { z <- 2 } else { z <- 3 }
> z
[1] 2
> if (z != 1) { print("no es uno") }
[1] "no es uno"
> if (x == 2 | y == 2 | z == 2) { print("hay un dos") } else { print("no hay
un dos") }
[1] "hay un dos"
> for (i in 1:5) { print(2**i) }
[1] 2
[1] 4
[1] 8
[1] 16
[1] 32
> while (x > 0) { print("quito uno"); x <- x - 1 }
[1] "quito uno"
[1] "quito uno"
[1] "quito uno"
> x
[1] 0
Cuando algún cálculo ocupa ser reutilizado en múltiples ocasiones,
posiblemente con algunas variaciones, conviene encapsularlo en una subrutina
como una función: nombre <- function(p1, p2, ... ){...; return(resultado)}
Conviene probar la creación y llamadas a subrutinas propias

> potdos <- function(x) 2**x


> potdos(3)
[1] 8
> eucl <- function(x1, y1, x2, y2) { dx <- x1 - x2; dy <- y1 - y2;
return(sqrt(dx^2 + dy^2)) }
> eucl(1, 2, 3, 4)
[1] 2.828427
Números pseudoaleatorios (La subrutina sample sirve para muestreo y
permutaciones.)
> runif(1)
[1] 0.8386876
> runif(5)
[1] 0.7410066 0.5553238 0.8469588 0.4764683 0.7612842
> runif(2, 4, 10)
[1] 8.608724 7.326382
> runif(1) < 0.5
[1] TRUE
> runif(1) < 0.5
[1] FALSE
> runif(1) < 0.5
[1] TRUE
> runif(5) < 0.5
[1] TRUE TRUE FALSE FALSE TRUE
> sample(1:10, 3)
[1] 7 4 3
> sample(1:10, 3)
[1] 3 6 1
> sample(1:10)
[1] 5 4 3 1 9 6 10 2 8 7
> sample(c(2, 4, 6), 10, prob=c(0.1, 0.2, 0.7), replace=TRUE)
[1] 6 6 6 6 2 2 6 2 4 6

También podría gustarte