knitr::opts_chunk$set(echo=TRUE)

Función para tamaño de muestreo en el mestreo aleatoeio simple:

ceiling: funcion de redondeo por encima

# N tamaño de población
# p Proporción de personas con respuesta afrimativa (o negativa ) a la pregunta piloto
# e errorde muestreo
# z puntuación en la curva normal
muestra.as=function(N,p,e,z){
  if(p<0 & p>1){
    if(e>=0 & e<0.1)
      {
      n = N*p*(1-p)/((N-1)*(e/z)^2+p*(1-p))
  n=ceiling(n)
  return(n)
      }
    else{
      message("Error de muestreo fuera del límite")
        }
   }
  else
  {
    message("Valor de proporción no adecuado")
    }}
#Probando la función
muestra.as(N=500,p=0.3,e=0.05,z=1.96)
## Valor de proporción no adecuado
#Probando el p fuera de límites
muestra.as(N=500,p=1.1,e=0.05,z=1.96)
## Valor de proporción no adecuado
#Probando el e fuera de límites
muestra.as(N=500,p=0.3,e=0.15,z=1.96)
## Valor de proporción no adecuado
#Probando el p y e fuera de límites
muestra.as(N=500,p=1.1,e=0.15,z=1.96)
## Valor de proporción no adecuado

En la función anterior se valida (con la función if) -el valor de p se encuentre en el intervalo \((0,1)\) -el valor de e se encuentre en el intervalo \((0,0.1)\) Las condiciones “if” se encuentran anidadas por lo cual

Función usando parámetro

reescalado=function(x,...){
  med=mean(x, ...)
  des=sd(x, ...)
  if (!is.na(des)){
     xr=(x-med)/des
  return(xr) 
  }else{
    message("La desviaión de sus datos es 0, no pueden ser estandarizados")
  }
}
mi_x=1
reescalado(mi_x)
## La desviaión de sus datos es 0, no pueden ser estandarizados

En el “if” de la anterior función se usa “is.na()” para saber si es un dato faltante, además se usa e signo de admiración “!” para negar la pegunta "Si la desviación NO es

reescalado=function(x,...){
  med=mean(x, ...)
  des=sd(x, ...)
  if (!is.na(des) & des>0){
     xr=(x-med)/des
  return(xr) 
  }else{
    message("La desviaión de sus datos es 0, no pueden ser estandarizados")
  }
}
(mi_x=rep(10,10))
##  [1] 10 10 10 10 10 10 10 10 10 10
reescalado(mi_x)
## La desviaión de sus datos es 0, no pueden ser estandarizados

Se agrega la condición de que “des>0” para el caso de tener todos los alores del vector iguales, este se anida con la función “&”

reescalado=function(x,...){

    med=mean(x, ...)
  des=sd(x, ...)
  if (!is.na(des)){
     xr=(x-med)/des
  return(xr) 
  }else{
    message("La desviaión de sus datos es 0 o contiene NA, no pueden ser estandarizados")
  }
}
(mi_x=c(rnorm(10),NA))
##  [1] -0.05839259  0.39069599  0.57506835  0.67615679  1.47931151  0.53411738
##  [7] -0.17128746  0.12528739 -1.35197463  0.76780786          NA
reescalado(mi_x,na.rm=TRUE)
##  [1] -0.4763879  0.1261394  0.3735057  0.5091328  1.5866989  0.3185632
##  [7] -0.6278552 -0.2299505 -2.2119443  0.6320980         NA

El argumento “…” actua como parámetro indetermindado para ser usado como argumento para las funciones internas: el caso “na.rm=TRUE” es argumento de la función “mean()” y “sd()” para realizar el calculo omitiendo los “NA”.

Evaluación perezosa

ff=function(a,b)a-a^2
ff(2,stop("ERROR"))
## [1] -2

Infijos

"+"(2,2)
## [1] 4

TALLER

Ejercicio 1

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:

fun_ejm1<-function(x){
  media=media(x);
  which(x<media);
  which(l1<l2);
  
}

Ejercicio 2

Describa paso a paso porque la función H1 al ser evaluada como H1() rinde el 3, H1(1) rinde el 1 y H1(1,1) rinde el 2.

H1<-function(x={y<-1;2},y=0){
  x+y^2
}
H1()
## [1] 3

Ejercicio 3

Describa porqué la función H2 al ser evaluada como H2() rinde el 100.

H2<-function(x=z){
  z<-100
  x
}
H2()
## [1] 100

La función está evaluada en x, sin embargo el valor de x está guaradado como z y z es igual a 100, por ende al no poner un valor en x, la función naturalmente va a ser evaluada en z.

Ejercicio 4

Apoyado en el ordenador infijo construido, construya otro operador con triple asterisco que muestre en consola las palabras amarillo, azul y rojo, cada una en su color respectivo