[R-es] Evaluar función?

Oscar Perpiñan Lamigueiro oscar.perpinan en upm.es
Sab Ene 8 00:21:49 CET 2011


Otra opción es definir como objeto de clase "function" la función que quieres evaluar:

evaluarfuncion <- function(f, a){
  f(a)
}

##Ahora defines la función que quieres evaluar
##como un objeto de clase function
x3 <- function(x) x^3

evaluarfuncion(x3, 2)

##O de forma directa, en una sola linea
evaluarfuncion(function(x)x^3, 2)

Saludos

Oscar.
On Fri, 7 Jan 2011 23:52:26 +0100
Mar Jm <mjumilhe7 en gmail.com> wrote:

> Muchas gracias Carlos. Tu respuesta me funciona si yo evalúo "manualmente"
> una función, pero mi intención es crear una función en la que, introduciendo
> una función (como x al cuadrado, x al cubo, etc) y un punto me de el valor
> de esa función en ese punto. Haciendo eso me da el error de "argumento
> no-numérico para operador binario". Todo esto viene porque quiero crear un
> programa en el que, introduciendo una función y un intervalo, me diga la
> integral aproximada en dicho intervalo. Para ello, necesito evaluar la
> función en distintos puntos del intervalo, y es ahí donde tengo el problema,
> pues no hay forma de crear una función en la que, introduciendo una función
> y un punto me devuelva el valor, sino que siempre me sigue dando el error
> anterior.
> 
> Por ejemplo, lo que yo he hecho es crear la función f<-function(x,a){x(a)}
> 
> De esta función espero que, si yo introduzco una función cualquiera y un
> punto a, me devuelva un valor. Como por ejemplo, si hago lo siguiente
> f(x^3,2) pensaba que me devolvería el valor 8 (2^3=8), pero en su lugar me
> da el error.
> 
> ¿Qué estoy haciendo mal?
> 
> Muchas gracias de nuevo y disculpad las molestias.
> 
> 
> 
> 
> 
> 
> El 7 de enero de 2011 23:29, Carlos Ortega <coforfe en gmail.com> escribió:
> 
> > Hola,
> >
> > Una forma de hacerlo es esta:
> >
> > x <- 42
> > eval(parse(text = "x^2"))
> >
> >
> > Con esta idea, puedes crear tu propia función para que tanto puedes pasar
> > como argumento tanto el punto, como la ecuación donde quieres encontrar su
> > valor.
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> > www.datanalytics.com/blog
> >
> > 2011/1/7 Mar Jm <mjumilhe7 en gmail.com>
> >
> >> Hola a todos!
> >>
> >> Soy un novato con R y, como suele pasar, tengo algunas dudas que me
> >> gustaría
> >> compartir con vosotros. Antes de nada decir que llevo muchas horas
> >> buscando
> >> información y peleándome con los manuales, tanto en inglés como en
> >> español,
> >> pero no sé como resolver mi problema que es el siguiente:
> >>
> >> ¿Cómo puedo hacer para crear un programa con el que, al darle una función
> >> y
> >> un punto, me diga que valor tiene? Es decir, si yo introduzco x^2 y el
> >> punto
> >> 2, que me diga que vale 4 (2^2=4). La idea sería poder poner cualquier
> >> tipo
> >> de función, pero si me dáis una solución que sólo sirva para introducir
> >> funciones polinómicas también me sirve. Lo que yo he hecho es lo
> >> siguiente,
> >> en el que la x seria la función a introducir y a sería el punto donde
> >> quiero
> >> evaluar la función x:
> >>
> >>  > evaluarfuncion<-function(x,a){
> >>        x(a)}
> >>
> >> Con esta función me da error si introduzco lo siguiente:
> >>
> >> > evaluarfuncion(x^3,3)
> >> Error en x^3 : argumento no-numérico para operador binario
> >>
> >> ¿De qué se trata el error? ¿Qué estoy haciend mal?
> >>
> >> Muchas gracias, aunque os pueda parecer una pregunta tonta, ya no sé como
> >> solucionarlo...
> >>
> >>
> >> Saludos,
> >>
> >> Marc
> >>
> >>        [[alternative HTML version deleted]]
> >>
> >>
> >> _______________________________________________
> >> R-help-es mailing list
> >> R-help-es en r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>
> >>
> >
> 
> 	[[alternative HTML version deleted]]
> 


-- 
Oscar Perpiñán Lamigueiro
Dpto. de Ingeniería Eléctrica
EUITI-UPM



Más información sobre la lista de distribución R-help-es