Documente Academic
Documente Profesional
Documente Cultură
FUNCIONES
4.1 FUNCIONES
Se puede acceder (llamar) a una determinada función desde cualquier parte del programa.
Cuando se llama a una función, se ejecutan las instrucciones que constituyen dicha función.
Una vez que se ejecutan las instrucciones de la función, se devuelve el control del programa
a la siguiente instrucción (si existe) inmediatamente después de la que provocó la llamada
a la función.
Cuando se accede a una función desde un determinado punto del programa, se le puede
pasar información mediante unos identificadores especiales conocidos como argumentos
(también denominados parámetros). Una vez que la función procesa esta información,
devuelve un valor mediante la instrucción return.
sentencias
return (object)
El objeto devuelto debe ser de cualquier tipo vector, matriz, lista, factor, array, data
frame, etc.
>suma=function(A,B)
{
return (A+B)
}
> suma(4,5)
[1] 9
area=function(B,H)
A=(B*H)/2
return(A)
area(5,4)
[1] 10
{ d=b^2-4*a*c;
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
return (c(x1,x2));
raiz(1,3,2)
hipotenusa<-function(cateto1, cateto2)
{
h<-sqrt(cateto1^2+cateto2^2)
data.frame(variable=c("cateto","cateto","hipotenusa"),
valor=c(cateto1,c ateto2,h))
}
> hipotenusa(2,4)
variable valor
cateto 2.000000
cateto 4.000000
hipotenusa 4.472136
> inverso(1:10)
[1] 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667 0.142857
1 0.1250000 0.1111111 0.1000000
> inverso(8,9,10,11,12)
[1] 0.12500000 0.11111111 0.10000000 0.09090909 0.08333333
3.1.3 Recursividad
Suma: 0+1+2+…+(n-1)+n
El programa seria:
> suma=function(n)
{
if(n==0)
return(0)
else
return(suma(n-1)+n)
}
> suma(10)
[1] 55
Suma: 1*1*2*…*(n-1)*n
El programa seria:
>factorial=function(n)
{
if(n==0)
return(1)
else
return(factorial(n-1)*n)
}
> factorial(5)
[1] 120
> expos=function(a,n)
{
if(n==0)
return(1)
else
return(expos(a,n-1)*a)
}
> expos(2,3)
[1] 8
}
> v=c(12,13,14,15,16)
> sumav(v,5)
[1] 70
Solucion
En caso contrario
}
> v=c(12,13,18,15,16)
> maximov(v,5)
[1] 18
Función Explicación
exp exponencial
sign(x) signo de x
{ if(condición)
Secuencia de instrucciones
> maximo=function(x,y)
{
if(x<y)
m=y
else
m=x
return(m)
}
> maximo(4,5)
[1] 5
> suma=function(n)
{
if(n==0)
return (0)
else
n+suma(n-1)
}
> suma(5)
[1] 15
> numpar(4)
}
> positivo(7)
[1] "es positivo"
La sintaxis es:
}
> raizcuadrada(25)
[1] 5
> raizcuadrada(-8)
[1] "imaginario"
ESTRUCTURA SWITCH
El comando SWITCH permite ejecutar un bloque de código distinto en función del valor de
una variable.
switch(expresión ,
valor1={instrucción 1},
...
Ejemplo:
funcestadis=function(tipo, x)
{
switch(tipo,
media = mean(x),
maximo = max(x),
suma = sum(x)
)
}
> x=1:10 # creando un vector con 10 números
> funcestadis(media,x)
> funcestadis("media",x)
[1] 5.5
> funcestadis("maximo",x)
[1] 10
> funcestadis("suma",x)
[1] 55
INTRUCCIÓN FOR
La instrucción for es una instrucción repetitiva En la programación imperativa es habitual
construir bucles dentro de los cuales se va modificando el valor de una expresión. Los bucles
más habituales en R son los for. Su sintaxis es
INSTRUCCIÓN WHILE
La sintaxis es:
While (condición)
Instrucciones
}
return(b)
}
> maximocd(4,10)
[1] 2
n=length(x)
while(n>0)
{
suma=suma+x[n]
n=n-1
}
return(suma)
}
> x=c(2,4,6,8)
> sumavector(x)
[1] 20
INSTRUCCIÓN NEXT
}
[1] 16
[1] 4
[1] 0
[1] 4
[1] 16
INSTRUCCIÓN BREAK
n=length(x)
while(1)
{
suma=suma+x[n]
n=n-1
if(n==0) break;
}
return(suma)
}
> x=c(2,4,6,8,12,14)
> sumavector(x)
[1] 46
INSTRUCCIÓN REPEAT
repeat
{
expresión 1
expresión 2
···
expresión N
if(condición) break;
}
> sumacuadrados=function(n)
{
suma=0;
repeat
{
suma=suma+n^2
n=n-1
if(n==0) break;
}
return(suma);
}
> sumacuadrados(10)
[1] 385