1. ¿Cuál es el resultado de la siguiente expresión?
2 * 2.5
## [1] 5
9%%2
## [1] 1
  1. Las edades de un grupo de amigos son 27, 23, 29, 24 y 31 años. Crea un vector de edades con estos datos y calcula su media, de forma que la salida se guarde en un fichero llamado amigos. Vuelve a calcularla, pero de manera que ahora el resultado salga por pantalla.
a<-c(27,23,29,24,31) #Creación del vector
amigos<- mean(a)  #calcular media, y que se guarde en el fichero (amigos)
mean(a) #calcularla nuevamente pero que el resultado salga en pantalla
## [1] 26.8
  1. Define el vector y = (1,3,5,7) utilizando la función c(). ¿Cómo lo harías con la función seq() ?.
y1<-c(1,3,5,7) 
y1
## [1] 1 3 5 7
#Ahora, utilizando la función seq()
y2<-seq(1,7,2)
y2
## [1] 1 3 5 7
  1. Sabemos que para sumar vectores estos deben tener la misma longitud. Sin embargo, R trabaja de manera distinta. Define los vectores x = (1,2,3,4,5,6), y = (7,8), z = (9,10,11,12). Calcula:
#Definimos
x<-c(1,2,3,4,5,6)
y<-c(7,8)
z<-c(9,10,11,12)
  1. x + x
x+x
## [1]  2  4  6  8 10 12
  1. x + y. ¿Qué ha hecho R?
x+y
## [1]  8 10 10 12 12 14

Podemos notar que lo que R hizo fue sumar entrada por entrada, pero como la dimensión de y es menor a la de x, Para poder seguir sumando R “pega” las entradas del vector de menor dimensión al final de este, y hace esto las veces necesarias para que todas las entradas del vector de mayor dimensión tenga una entrada del otro vector que sumarle. En este caso, y=(7,8,7,8,7,8)

  1. x+z. Ahora R da un warning pero aun así nos da un resultado. ¿Cómo lo ha calculado?
x+z
## Warning in x + z: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1] 10 12 14 16 14 16

En este caso sigue la misma metodologia anterior, mandando el resutado hasta donde termina el vector de longitud mayor. Sin embargo, nos avisa que la diemnsión del vector que es menor no es un multiplo del de mayor dimensión.

  1. Se definió el vector x = (1,2,3,4,5,6). A partir de dicho vector se han construido las matrices m1, m2, m3, m4. Caption for the picture.
x<-c(1,2,3,4,5,6)

Todas las matrices se han definido a partir de matrix(x,…). Reproduce el código necesario para obtener cada una de ellas.

m1<-matrix(x, ncol = 3)
m1
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
m2<-matrix(x, ncol=2)
m2
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6
m3<-matrix(x, ncol = 3, byrow = TRUE)
m3
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
m4<-matrix(x, ncol=3, nrow = 3)
m4
##      [,1] [,2] [,3]
## [1,]    1    4    1
## [2,]    2    5    2
## [3,]    3    6    3
  1. ¿Cuál es la diferencia entre \(*\), %*% y outer() ? Compruébalo con las matrices Caption for the picture.
A<-matrix(c(2,1,3,4), ncol = 2)
B<-matrix(c(3,8), ncol = 1)

\(*\) hace el producto entrada por entrada

%*% hace el producto de matrices como lo conocemos algebraicamente

outer(A,B) hace el producto externo entre matrices

#A*B

NOTA: A\(*\)B no puede desarrollarse pues las matrices son de diferente dimensión, lo que imposibilita el producto entra por entrada

A%*%B
##      [,1]
## [1,]   30
## [2,]   35
outer(A,B)
## , , 1, 1
## 
##      [,1] [,2]
## [1,]    6    9
## [2,]    3   12
## 
## , , 2, 1
## 
##      [,1] [,2]
## [1,]   16   24
## [2,]    8   32
  1. Un grupo de amigos está formado por Ana de 23 años, Luis de 24 años, Pedro de 22, Juan de 24, Eva de 21 y Jorge de 22 años. Crea los vectores correspondientes a nombre, edad y sexo. (Usa la codificacio´n M=mujer, H=hombre).
nombre<-c("Ana", "Luis", "Pedro", "Juan", "Eva", "Jorge")
edad<-c(23,24,22,24,21,22)
sexo<-c("M","H","H","H","M","H")
  1. Convierte el vector sexo en un factor sexf. ¿Cuáles son los niveles de dicho factor?
sexf<-as.factor(sexo)
sexf
## [1] M H H H M H
## Levels: H M

Como podemos ver los niveles son H y M, es decir Hombre y Mujer

  1. Con los datos anteriores hemos creado el dataframe amigos. El resultado es:

Caption for the picture. ¿Cuál es el código de R da como resultado esta salida?

amigos<-data.frame(nombre, edad, sexo)
amigos
##   nombre edad sexo
## 1    Ana   23    M
## 2   Luis   24    H
## 3  Pedro   22    H
## 4   Juan   24    H
## 5    Eva   21    M
## 6  Jorge   22    H
  1. ¿Cuál es la edad media de las chicas del grupo? ¿Y la de los chicos? Intenta responder a ambas preguntas con un único comando.
media<-tapply(edad, sexo, mean)
media
##  H  M 
## 23 22
  1. Escribe una función que calcule el factorial de un número. Recuerda que la factorial esta definido para valores enteros no negativos como: n! = n•(n−1)•…•2•1. La función debe dar mensaje de error en caso de introducir un valor que no sea entero o negativo.
factorial<-function(n){
if(n < 0){
return("Numero invalido, n debe ser mayor o igual a 0")
}else{
  if(round(n)!= n){
    return("Numero invalido, n debe ser entero")
  }else{
    if(n==0 || n==1){
      return(1)
    }else{
      return(n*factorial(n-1))
    }
  }
}
}
  1. Escribe una función edades que, dado el día mes y año del nacimiento de una persona, nos devuelva la edad que tiene en el momento de la ejecución de la función.

NOTA: La siguient función pide la fecha acual y la fecha de nacimiento, todo con números. Devuelve fecha exacta, años, meses y dás. Y hace diferencia depensiendo el mes (si tiene 30 o 31 días), lo que no contempla es si es año bisiesto.

edades<- function(diaActual, mesActual, anioActual, diaNac, mesNac, anioNac){
  anios<-anioActual-anioNac
  meses<- mesActual-mesNac
  dias<- diaActual-diaNac
  
  if(dias<0){
   meses<-meses-1
   dias<-31+dias
  }
  if(mesActual == 3){
    dias<-dias-3
  }
  if(mesActual == 5|| mesActual==7|| mesActual== 10|| mesActual ==12){
    dias<-dias-1
  }
  if(meses<0){
    anios<-anios-1
    meses<-12+meses
  }
  edad<-(c(anios, meses, dias))
  return(edad)
}
  1. Escribe una función “par.impar” que realice la suma de todos los números pares y también de todos los número impares comprendidos entre 1 y 200. La salida se muestra a continuación:
Caption for the picture.

Caption for the picture.

par.impar<-function(n){
  pares<-0
  impares<-0
  for (i in 1:n) {
    if(i%%2 == 0){
    pares<-pares+i
     }else{
      impares<-impares+i
    }
  }
  print(paste("La suma de los pares es:", pares))
  print(paste("La suma de los impares es:", impares))
}
par.impar(200)
## [1] "La suma de los pares es: 10100"
## [1] "La suma de los impares es: 10000"