buen dia a toda la comunidad estoy empezando a usar r y en una implementacion que estoy haciendo requiero que 2 valores que se calculan en una funcion puedan ser vistos en otra pero no he podido hallar la forma he buscado la forma de hacer las variables globales pero no he podido alguien sabe como hacerlo mil gracias, saludos Enrique RAMOS ¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx [[alternative HTML version deleted]]
Un simple ejemplo : f1 <- function(x) {y=x^2; return(y)} # calcula el cuadrado de x f2 <- function(x){y=sqrt(x); return(y)} #calcula la raiz de x z = f2(f1(x)) # calcula el valor absoluto de x : sqrt(x^2) Alternativamente, si necesitas que el valor calculado en la función este en el entorno global, puedes utilizar la función assign f1 <- function(x) { y=x^2; assign(x2,y,envir=.GlobalEnv) # el valor del cuadrado de x está en la variable global x2 } Un saludo. Olivier -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 08/07/2009, a las 19:49, Enrique RAMOS escribió:> buen dia a toda la comunidad > estoy empezando a usar r y en una implementacion que estoy haciendo > requiero que 2 valores que se calculan en una funcion puedan ser > vistos en otra pero no he podido hallar la forma he buscado la > forma de hacer las variables globales pero no he podido alguien > sabe como hacerlo > mil gracias, saludos > Enrique RAMOS > > > ¡Obtén la mejor experiencia en la web! Descarga gratis el > nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx > [[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
Perdón, poner x2 entre comillas (pues se trata del nombre de la variable en la cual se asigna el valor): f1 <- function(x) { y=x^2; assign("x2",y,envir=.GlobalEnv) # el valor del cuadrado de x está en la variable global x2 } -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 08/07/2009, a las 19:49, Enrique RAMOS escribió:> buen dia a toda la comunidad > estoy empezando a usar r y en una implementacion que estoy haciendo > requiero que 2 valores que se calculan en una funcion puedan ser > vistos en otra pero no he podido hallar la forma he buscado la > forma de hacer las variables globales pero no he podido alguien > sabe como hacerlo > mil gracias, saludos > Enrique RAMOS > > > ¡Obtén la mejor experiencia en la web! Descarga gratis el > nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx > [[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
Buenas tardes Enrique, Hay varias maneras de hacer lo que quieres, una de ellas la siguiente: # Función que retorna el cuadrado y la raiz cuadrada de un numero x>0 f1 <- function(x) list(a = x^2, b = sqrt(x) ) # Función que toma un número x y le suma k f2 <- function(x, k) x + k # Ejemplo res <- f1(5) res f2(x = res$a, k = res$b) # 27.23607 Saludos, Jorge Ivan Velez 2009/7/8 Enrique RAMOS <ceramos0@yahoo.com.mx>> buen dia a toda la comunidad > estoy empezando a usar r y en una implementacion que estoy haciendo > requiero que 2 valores que se calculan en una funcion puedan ser vistos en > otra pero no he podido hallar la forma he buscado la forma de hacer las > variables globales pero no he podido alguien sabe como hacerlo > mil gracias, saludos > Enrique RAMOS > > > ¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo > Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx > [[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]]
También dispones del operador "<<-". De todos modos, el mejor consejo al respecto es *NO*. No es bueno que una función, internamente, modifique el entorno global. Habría que justificarlo muy sesudamente. Es mejor devolver todos los valores que haga falta (por ejemplo, dentro de una lista) y dejar que sea el código que llama a la función el que decida qué hacer con ellos. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com
Enrique, De acuerdo con *NO* modificar el entorno global tal y como dice Carlos. Las funciones locales pueden ser manipuladas de manera más sencilla, además de que son más fáciles de entender ;) Lo único que necesitarías es almacenar los resultados de tu (primera) función en un objeto y luego tomar ese objeto (o elementos del mismo) como argumentos para tu segunda función o procedimiento. Si el resultado de tu primera función tienen más de un elemento y cada uno de ellos es de diferente tipo, te sugeriría trabajar, tal y como Carlos Gil menciona, con listas. El paso siguiente es extraer los elementos de esta lista y utilizarlos como argumentos para tu segunda función. En mi mensaje previo hay un ejemplo de esto. Espero sea de utilidad, Jorge 2009/7/8 Carlos J. Gil Bellosta <>> También dispones del operador "<<-". De todos modos, el mejor consejo > al respecto es *NO*. > > No es bueno que una función, internamente, modifique el entorno > global. Habría que justificarlo muy sesudamente. Es mejor devolver > todos los valores que haga falta (por ejemplo, dentro de una lista) y > dejar que sea el código que llama a la función el que decida qué hacer > con ellos. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com >[[alternative HTML version deleted]]
Como dicen, es mejor No NO. Si la respuesta es usar una variable global, probablemente la pregunta esta mal formulado. !!! ¿Puedes describir el problema que quiere solver usando un variable global?, segurAMENTE podemos encontara una solución mejor! Kjetil 2009/7/8 Jorge Ivan Velez <jorgeivanvelez en gmail.com>:> Enrique, > De acuerdo con *NO* modificar el entorno global tal y como dice Carlos. Las > funciones locales pueden ser manipuladas de manera más sencilla, además de > que son más fáciles de entender ;) Lo único que necesitarías es > almacenar los resultados de tu (primera) función en un objeto y luego tomar > ese objeto (o elementos del mismo) como argumentos para tu segunda función o > procedimiento. > Si el resultado de tu primera función tienen más de un elemento y cada uno > de ellos es de diferente tipo, te sugeriría trabajar, tal y como Carlos Gil > menciona, con listas. El paso siguiente es extraer los elementos de esta > lista y utilizarlos como argumentos para tu segunda función. En mi mensaje > previo hay un ejemplo de esto. > > Espero sea de utilidad, > > Jorge > > > 2009/7/8 Carlos J. Gil Bellosta <> > >> También dispones del operador "<<-". De todos modos, el mejor consejo >> al respecto es *NO*. >> >> No es bueno que una función, internamente, modifique el entorno >> global. Habría que justificarlo muy sesudamente. Es mejor devolver >> todos los valores que haga falta (por ejemplo, dentro de una lista) y >> dejar que sea el código que llama a la función el que decida qué hacer >> con ellos. >> >> Un saludo, >> >> Carlos J. Gil Bellosta >> http://www.datanalytics.com >> > > [[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 > >-- "... an entire human genome would fit on a music CD." --- www.thinkgene.com