Documento 5 Cuestion 1

  1. Crea un vector v1 con los siguientes 10 valores (3, 12, 6, -5, 0, NA, 15, 1, -10, 7).
v1 <- c(3, 12, 6, -5, 0, NA, 15, 1, -10, 7)


  1. Crea un vector v2 con valores de 0 a 10 de 0.1 en 0.1
v2 <- seq(from = 0, to = 10, by = 0.1)


  1. Comando para ver el tipo de datos de v1.
class(v1)
## [1] "numeric"


  1. Resta 2 a los elementos pares de v1 (con una sola orden y de forma vectorial). Define dos funciones que realicen esta tarea.
v3 <- v1[c(FALSE,TRUE)]-2
v3
## [1] 10 -7 NA -1  5


  1. Calcula la suma y la media de v2. tem Con los vectores v2 y v3 crea un data.frame de nombre mi.df1.
sumV2 <- sum(v2)
sumV2
## [1] 505
meanV2 <- mean(v2)
meanV2
## [1] 5
#mi.df1 <- as.data.frame(c(v2,v3))
#mi.df1

Se nos pide que creemos un dataframe con los vectores v2 y v3, pero v3 no nos dice en ningún momento que lo creemos ni cómo.

  1. Cambia el nombre de columnas de data.frame anterior con las etiquetas x y seno(x).


Tampoco sabríamos cómo hacer este apartado ya que no hemos podido crear el dataframe anterior.


  1. Invierte el orden de los elementos de v2 y lo guardas en v4.
v4 <- v2[(length(v2)):1]
v4
##   [1] 10.0  9.9  9.8  9.7  9.6  9.5  9.4  9.3  9.2  9.1  9.0  8.9  8.8  8.7  8.6
##  [16]  8.5  8.4  8.3  8.2  8.1  8.0  7.9  7.8  7.7  7.6  7.5  7.4  7.3  7.2  7.1
##  [31]  7.0  6.9  6.8  6.7  6.6  6.5  6.4  6.3  6.2  6.1  6.0  5.9  5.8  5.7  5.6
##  [46]  5.5  5.4  5.3  5.2  5.1  5.0  4.9  4.8  4.7  4.6  4.5  4.4  4.3  4.2  4.1
##  [61]  4.0  3.9  3.8  3.7  3.6  3.5  3.4  3.3  3.2  3.1  3.0  2.9  2.8  2.7  2.6
##  [76]  2.5  2.4  2.3  2.2  2.1  2.0  1.9  1.8  1.7  1.6  1.5  1.4  1.3  1.2  1.1
##  [91]  1.0  0.9  0.8  0.7  0.6  0.5  0.4  0.3  0.2  0.1  0.0


  1. Guarda en un vector v5 los elementos de v1 que no son negativos ni NA.
v5 <- v1[v1 >= 0 & !is.na(v1)]
v5
## [1]  3 12  6  0 15  1  7


  1. Borra de v1 los elementos negativos.
v1 <- v1[v1>=0]


  1. Calcula la longitud de v1 y mira la estructura del vector.
length(v1)
## [1] 8
str(v1)
##  num [1:8] 3 12 6 0 NA 15 1 7


  1. Elimina v1 del Workspace de R.
rm(v1)


12. Calcula la media de aquellos valores de v2 que sean menores de 1.

m <- mean(v2[v2< 1])
m
## [1] 0.45


13. Elimina de v2 aquellos elementos mayores de 1 y menores de 3.

v2 <- v2[v2<=1 | v2 >= 3]
v2
##  [1]  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.0  3.0  3.1  3.2  3.3
## [16]  3.4  3.5  3.6  3.7  3.8  3.9  4.0  4.1  4.2  4.3  4.4  4.5  4.6  4.7  4.8
## [31]  4.9  5.0  5.1  5.2  5.3  5.4  5.5  5.6  5.7  5.8  5.9  6.0  6.1  6.2  6.3
## [46]  6.4  6.5  6.6  6.7  6.8  6.9  7.0  7.1  7.2  7.3  7.4  7.5  7.6  7.7  7.8
## [61]  7.9  8.0  8.1  8.2  8.3  8.4  8.5  8.6  8.7  8.8  8.9  9.0  9.1  9.2  9.3
## [76]  9.4  9.5  9.6  9.7  9.8  9.9 10.0


  1. Calcula la suma acumulada de los valores de v2.
s <- sum(v2)
s
## [1] 467


  1. De varias formas distintas crea una matriz M1 con los valores de 1 a 25 con 5 filas (almacenados por filas).
M1 <- matrix(1:25, nrow=5, ncol=5, byrow=TRUE)
M1 <- matrix(1:25, nrow=5, byrow=TRUE)
M1
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
## [5,]   21   22   23   24   25
M1.2 <- rbind(c(1,2,3,4,5), c(6,7,8,9,10), c(11:15), c(16:20), c(21:25))
M1.2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
## [5,]   21   22   23   24   25
M1.3 <- rbind(1:5,6:10,11:15,16:20,21:25)
M1.3
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
## [5,]   21   22   23   24   25


  1. Extrae de la matriz M1 aquellos valores que sean mayores que 10.
M <- M1[M1>10]
M
##  [1] 11 16 21 12 17 22 13 18 23 14 19 24 15 20 25


  1. Extrae de la matriz M1 la primera y la última columna y guarda el resultado en matriz M2.
M2 <- cbind(M1[ ,1], M1[ ,ncol(M1)])
M2
##      [,1] [,2]
## [1,]    1    5
## [2,]    6   10
## [3,]   11   15
## [4,]   16   20
## [5,]   21   25


  1. Calcula el determinante de M1.
det(M1)
## [1] 0


  1. Calcula la inversa de M1.

solve(M1)

Al ser su determinante 0, no podemos calcular la inversa de la matriz M1, ya que salta un error al dividir por 0.


  1. Calcula los autovectores y autovalores de M1. Define una función que dada una matriz devuelva en una lista su radio espectral que se define como el mayor autovalor en módulo y su autovector correspondiente.
f <- function(M1){

  mat <- eigen(M1)
  vects <- Mod(mat$values)
  
  indice <- which.max(vects)
  res <- list(vects[indice], mat$vectors[, indice])
  
  return(res)
}

ej20 <- f(M1)
ej20
## [[1]]
## [1] 68.64208
## 
## [[2]]
## [1] -0.1079750+0i -0.2527750+0i -0.3975750+0i -0.5423751+0i -0.6871751+0i

Aquí encontramos otra forma de calcular lo pedido:

f2 <- function(m){

  eigens <- eigen(m)
  modulos <- unlist(lapply(eigens$values, Mod))
  indice <- which.max(modulos)
  radEsp <- list(autovalor = (max(modulos[1])), autovector = eigens$vectors[, indice])
  
  return(radEsp)
}