Programar una función en R que devuelva varias variables

En una entrada anterior hemos utilizado R para crear o definir una función; sin embargo, tal como se definió la función  solo te obtiene una variables de salida. El potencial de crear funciones ,rutinas o subrutinas es que estas sean capaces de devolver varias variables. Por ejemplo, queremos crear una función que dado el radio del círculo se obtenga información sobre tal como área ($A$), perímetro ($P$) o momento polar de inercia ($J$).   En este post vamos a ver como programar para que R devuelva varias variables.

Primero, definamos como calcular el área

$$A= \pi {r^2}$$

donde $r$ es el rádio del círculo. También,

$$P=2{\pi}r$$

y,

$$J=\frac{\pi {r^2}}{2}$$

Para definir la función utilizaremos el concepto list que es un vector que puede contener varios objetos -los objetos pueden ser  vectores, matrices,  caracteres, etc. en el siguiente código se muestra como en la opción return se ha creado una list que contiene las propiedades del círculo que queremos calcular.

circulo<-function(r){ #función de propiedades de un circulo
A<-pi*r^2 #área
P<-2*pi*r #perímetro
J return(list(A=A,P=P,J=J))
}

Ahora podemos llamar a la función para un determinado $r$ y así calcular las propiedades del círculo.


y<-circulo(0.2)
print('Área para r=0.2')
y$A
print('Perímetro para r=0.2')
y$P
print('Momento polar de Inercia para r=0.2')
y$J

Noten que para poder acceder a un objeto de la lista se emplea $ \$$. Así para saber el valor del área primero se coloca la variable que le fue asignado los resultados de la función y en nuestro ejemplo) y luego $\$ $ y la variable requerida. Si queremos el perímetro será: y$\$$P.

Les dejamos seguidamente el código que peude ser ejecutado para varios radios,