Ejercicios

El redondeo de la temperatura diaria promedio entera más cercana (en ° F)

Registrado por cierta estación durante un mes cualquiera del 2010 para dos localidades diferentes (L1 y L2) se da en la tabla 1:

Funcion tempz

tempz <-  function(L1,L2,f){
  if(f == "Tm") {
  Tm1=  mean(L1)
  Tm2 = mean(L2)
return(list("Temperatura media 1"=Tm1,"Temperatura media 2" =Tm2))}
  
if(f == "Tb"){
  d1 = which(L1 < mean(L1))
  d2 = which(L2 < mean(L2))
  Tb1 = length(d1)
  Tb2 = length(d2)
return(list("Dias de Temperatura baja 1 "=Tb1,"Dias de Temperatura baja 2" =Tb2))}
  
if(f=="Tv"){
  d = L1 > L2
  Tvs = which(d== TRUE)
  Tvs2=length(Tvs)
return(list( "Numero de dias de Temperatura L1>L2"=Tvs2,"Dias de Temperatura L1>L2"=Tvs))}
  
if(f=="Tf"){
   Tvs3 = L1 - L2 
   x= which.max(Tvs3)
   y = Tvs3[x]
   Td =  which(Tvs3 == y)
   z= length(Td)
return(list( "Numero de dias de mayor diferencia de Temperatura "=z,"dias de mayor diferencia de Temperatura "=Td,"mayor diferencia de Temperatura"=y))}
  
if(f == "Td"){
  Td1 = L1 - L2 
  Td2 = L2-L1
  tx= which(Td1 >=3)
  tx2= which(Td2 >=3)
  tX =sort( c(tx,tx2))
  tz= length(tx)
  tz2= length(tx2)
  tZ = length(tX)
return(list( "Numero de dias de  diferencia de Temperatura >=3 " = tZ,"dias de mayor diferencia de Temperatura "=tX,"Numero de dias diferencia de Temperatura >=3 por localidad"=c("localidad 1"=tz,"localidad 2"= tz2)))}
  
if(f== "TFaC"){
  options(digits = 3)
  c = (L1 - 32)* 5/9 
  c2 = (L2-32)* 5/9
return(list("localidad 1 T°C" = c,"localidad 2 T°C"=c2)) }
  
if(f == "Tg"){
  library(lattice)
  options(digits = 3)
  c = (L1 - 32)* 5/9 
  c2 = (L2-32)* 5/9
  Dias= rep(c(1:31),2)  
  local= data.frame("temperatura"=c(c,c2),"dias"=Dias,
                    "localidad"=c(rep("localidad1",31),
                                  rep("localidad 2",31)))
  xyplot(temperatura~dias|localidad,data=local, xlab= "Dias",
         ylab = "Temperatura(°C)",pch= 20,cex=1,col="darkgreen",
         main = "Temperatura en °C por localidad",grid=T) }

else{"Argumento funcion desconocido, usar :(Tm,Tb,Tv,Tf,Td,TFaC,Tg)"}}
L1 = c(62,50,46,44,43,41,43,45,41,36,41,42,48,51,60,68,71,61,56,55,66,72,65,70,69,59,56,54,59,67,61)
L2 = c(39,40,37,37,37,40,42,47,43,45,44,45,55,46,41,41,48,49,45,40,38,41,41,39,42,42,47,46,43,43,41)

tempz(L1,L2,f="Tm")
## $`Temperatura media 1`
## [1] 54.90323
## 
## $`Temperatura media 2`
## [1] 42.70968
tempz(L1,L2,f="Tb")
## $`Dias de Temperatura baja 1 `
## [1] 14
## 
## $`Dias de Temperatura baja 2`
## [1] 17
tempz(L1,L2,f="Tv")
## $`Numero de dias de Temperatura L1>L2`
## [1] 25
## 
## $`Dias de Temperatura L1>L2`
##  [1]  1  2  3  4  5  6  7 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
tempz(L1,L2,f="Tf")
## $`Numero de dias de mayor diferencia de Temperatura `
## [1] 2
## 
## $`dias de mayor diferencia de Temperatura `
## [1] 22 24
## 
## $`mayor diferencia de Temperatura`
## [1] 31
tempz(L1,L2,f="Td")
## $`Numero de dias de  diferencia de Temperatura >=3 `
## [1] 27
## 
## $`dias de mayor diferencia de Temperatura `
##  [1]  1  2  3  4  5 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
## [26] 30 31
## 
## $`Numero de dias diferencia de Temperatura >=3 por localidad`
## localidad 1 localidad 2 
##          23           4
tempz(L1,L2,f="TFaC")
## $`localidad 1 T°C`
##  [1] 16.67 10.00  7.78  6.67  6.11  5.00  6.11  7.22  5.00  2.22  5.00  5.56
## [13]  8.89 10.56 15.56 20.00 21.67 16.11 13.33 12.78 18.89 22.22 18.33 21.11
## [25] 20.56 15.00 13.33 12.22 15.00 19.44 16.11
## 
## $`localidad 2 T°C`
##  [1]  3.89  4.44  2.78  2.78  2.78  4.44  5.56  8.33  6.11  7.22  6.67  7.22
## [13] 12.78  7.78  5.00  5.00  8.89  9.44  7.22  4.44  3.33  5.00  5.00  3.89
## [25]  5.56  5.56  8.33  7.78  6.11  6.11  5.00
tempz(L1,L2,f="Tg")

Funcion convert

conver = function(ft){
if(ft>= 0 & ft<=15000 ){
  ft  
  t = 59-0.00356*ft

return(list("Altura"=ft,"Temperatura"=t))}
  
else{print(paste(warning("valor fuera de rango"),ft))}
  }

convert<- Vectorize(conver, vectorize.args = "ft") 
al = c(0,100,200,300,400,500,1000,1500,2000,3000,4000,5000,6000,10000,1500) 
al2 = c(0,100,200,300,400,500,1000,1500,2000,3000,4000,5000,6000,10000,1500,15001)
tem = convert(al);tem
##             [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## Altura      0    100  200  300  400  500  1000 1500 2000 3000  4000  5000 
## Temperatura 59   58.6 58.3 57.9 57.6 57.2 55.4 53.7 51.9 48.3  44.8  41.2 
##             [,13] [,14] [,15]
## Altura      6000  10000 1500 
## Temperatura 37.6  23.4  53.7
tem1 = convert(50);tem1
##             [,1]
## Altura      50  
## Temperatura 58.8
tem2 = convert(-50);tem2
## Warning in paste(warning("valor fuera de rango"), ft): valor fuera de rango
## [1] "valor fuera de rango -50"
## [1] "valor fuera de rango -50"
tem3 = convert(al2);tem
## Warning in paste(warning("valor fuera de rango"), ft): valor fuera de rango
## [1] "valor fuera de rango 15001"
##             [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## Altura      0    100  200  300  400  500  1000 1500 2000 3000  4000  5000 
## Temperatura 59   58.6 58.3 57.9 57.6 57.2 55.4 53.7 51.9 48.3  44.8  41.2 
##             [,13] [,14] [,15]
## Altura      6000  10000 1500 
## Temperatura 37.6  23.4  53.7

Funcion cn.v

cn.v = function(x,y){
if(y=="cv"){
  c = sd(x)
  v = mean(x)
  cv= (c/v)*100
return(list("Coeficiente de variacion (%) "=cv,"Media"=v,"Desciacion estandar"=c))}
  
if(y=="cvm"){
  m= which.min(x)
  xm = x[-m]
  cm = sd(xm)
  vm = mean(xm)
  cvm= (cm/vm)*100
return(list("Coeficiente de variacion (%)" =cvm,
              "Media"=vm,"Desciacion estandar"=cm))
   
   }
if(y=="cvM"){
  M= which.max(x)
  xM = x[-M]
  cM = sd(xM)
  vM = mean(xM)
  cvM= (cM/vM)*100
return(list("Coeficiente de variacion (%) "=cvM,
                "Media"=vM,"Desciacion estandar"=cM))
   }
if(y=="cvmM"){
  M= which.max(x)
  m= which.min(x)
  xmM = x[-c(M,m)]
  cmM = sd(xmM)
  vmM = mean(xmM)
  cvmM= (cmM/vmM)*100
return(list("Coeficiente de variacion (%) "=cvmM,
            "Media"=vmM,"Desciacion estandar"=cmM))
   }
if(y=="cv%"){
  sort(x)
  xx = x[-c(1,2,49,50)]
  cc = sd(xx)
  vv = mean(xx)
  cvv= (cc/vv)*100
  return(list("Coeficiente de variacion (%) "=cvv,
              "Media"=vv,"Desciacion estandar"=cc))
   }
if(y=="T"){
    sort(x)
    c = sd(x)
    v = mean(x)
    cv= (c/v)*100
    xx = x[-c(1,2,49,50)]
    cc = sd(xx)
    vv = mean(xx)
    cvv= (cc/vv)*100
    m= which.min(x)
    xm = x[-m]
    cm = sd(xm)
    vm = mean(xm)
    cvm= (cm/vm)*100
    M= which.max(x)
    xM = x[-M]
    cM = sd(xM)
    vM = mean(xM)
    cvM= (cM/vM)*100
    M= which.max(x)
    m= which.min(x)
    xmM = x[-c(M,m)]
    cmM = sd(xmM)
    vmM = mean(xmM)
    cvmM= (cmM/vmM)*100
return(data.frame("cv.n"=c("n","n-min","n-max","n-minmax",
                           "ntruncado8"),
"Media"=c(v,vm,vM,vmM,vv),"Desviacion"=c(c,cm,cM,cmM,cc),
"Coeficionte de variacion"=c(cv,cvm,cvM,cvmM,cvv)))
 }
else{"Argumento funcion desconocido, usar :(cv,cvm,cvM,cvmM,T)"}
}
cn.v(x=rnorm(50,5.5,0.5),"cv")
## $`Coeficiente de variacion (%) `
## [1] 9.48
## 
## $Media
## [1] 5.51
## 
## $`Desciacion estandar`
## [1] 0.522
cn.v(x=rnorm(50,5.5,0.5),"cvm")
## $`Coeficiente de variacion (%)`
## [1] 8.58
## 
## $Media
## [1] 5.46
## 
## $`Desciacion estandar`
## [1] 0.468
cn.v(x=rnorm(50,5.5,0.5),"cvM")
## $`Coeficiente de variacion (%) `
## [1] 9.54
## 
## $Media
## [1] 5.55
## 
## $`Desciacion estandar`
## [1] 0.529
cn.v(x=rnorm(50,5.5,0.5),"cvmM")
## $`Coeficiente de variacion (%) `
## [1] 8.96
## 
## $Media
## [1] 5.47
## 
## $`Desciacion estandar`
## [1] 0.49
cn.v(x=rnorm(50,5.5,0.5),"cvv")
## [1] "Argumento funcion desconocido, usar :(cv,cvm,cvM,cvmM,T)"
cn.v(x=rnorm(50,5.5,0.5),"T")
cn.v(x=rnorm(50,5.5,0.5),"x")
## [1] "Argumento funcion desconocido, usar :(cv,cvm,cvM,cvmM,T)"

funcion 5

hl<- function(x={y<- 1;2},y=0){x+y^2}
hl()# La funcion cuando no tiene valores escritos x=2 y 2 y Y= 1 y estos valores seran remplazado  dentro de la formula 
## [1] 3
hl(1)# La funcion cuando  tiene un valor escritos en la posicion X ,  Y= 0 y estos valores seran remplazado  dentro de la formula 
## [1] 1
hl(2)# La funcion cuando  tiene un valor escritos en la posicion X ,  Y= 0 y estos valores seran remplazado  dentro de la formula 
## [1] 2

Funcion 5

h2 = function(x=z){
  z= 100
x
}
h2()#La funcion h2 retorna el valor de X en funcion del valor de Z el valor que tome z lo tomara X y como ya etsa definido z=100 , x sera igual a 100 siempr ey cuando no se introduscan argumentos a la funcion 
## [1] 100
h2(x=2)#Si introdusco un valor a la funcion x tomara ese valor ya que la funcion retorna a X  e ignora a Z
## [1] 2