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]]
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@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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
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@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@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@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >[[alternative HTML version deleted]]
Hola, Puedes hacerlo de esta manera a partir de lo que te he comentado:> > f<-function(fun_x,x0) {+ x <-x0 + eval(parse(text = fun_x)) + }> f("x^3",10)[1] 1000>Fíjate en el detalle de que la función que quieres evaluar, se introduce como una cadena de caracteres que luego se evalúa con "eval". De todas formas, tienes disponible en R una librería que permite la integración numérica multidimensional. R2Cuba <http://cran.at.r-project.org/web/packages/R2Cuba/index.html>Multidimensional Numerical Integration Saludos, Carlos Ortega www.qualityexcellence.es www.datanalytics.com/blog 2011/1/7 Mar Jm <mjumilhe7@gmail.com>> 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@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@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@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >> >[[alternative HTML version deleted]]
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
Hola, ¿qué tal? Ten cuidado no vaya a ser que alguien quiera integrar la función borrar.disco.duro() ¡Te lo puede borrar íntegramente! Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com> 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
> 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 puntosMarc: Si lo que quieres hacer es exactamente lo que indicas, creo que lo mejor sería que empleases la función de R ‘integrate’. Saludos, Jordi Ocaña Rebull Departament d’Estadística Universitat de Barcelona Av. Diagonal, 645, 08028 Barcelona jocana@ub.edu Tel. 934021565 Fax 934111733 [[alternative HTML version deleted]]