Skip to content
Prev 8497 / 15379 Next

[R-es] Función assign y paste0 en un loop

Hola Isa,

     Lo que comentas se puede hacer.

     Antes de nada un detalle, tal como lo estas planteando puede ser 
más cómodo que los ajustes los guardes en una lista. Por ejemplo, de la 
forma:
glm.fit <- list()
...
glm.fit[[i]] <- glm(...)
...
Así tienes controlados los objetos en lugar de solo el nombre...

     Para programar cosas de ese estilo (emulando desde el código la 
forma de proceder en la consola ), podemos recurrir a funciones como 
assign() o do.call(). Por ejemplo creo que con do.call podrías hacer 
fácilmente lo que pretendes (e.g. res[[i]] <- do.call("step", 
glm.fit[i]), porque glm.fit[i] es ya una lista...).

     Pero quería aprovechar para comentar que R es un lenguaje 
interpretado. Escribes un texto en la consola que luego es analizado 
(parseado) y evaluado. Para ver un poco como funciona R podríais 
consultar por ejemplo 
http://adv-r.had.co.nz/Computing-on-the-language.html. Lo que esta 
haciendo el interprete de comandos (la consola) se puede hacer con el 
código (e incluso deshacerlo: substitute(), quote()).
     Lo que realmente quería comentar es que con las funciones 
eval(parse(text)) podéis evaluar en R cualquier expresión de texto como 
si se introdujera en la consola. Yo lo tengo empleado alguna vez...

      Espero que sirva de ayuda (y corregidme si veis cualquier cosa...).

     Un saludo, Rubén.

P.D. Si queréis crear una lista de la dimensión correcta glm.fit <- 
vector("list", np) podría ser más adecuado. Realmente no es importante 
en este caso...


El 04/02/2015 a las 11:07, Isa García Barón escribió: