2010-04-26 27 views
5

Digamos que tengo una función que no puedo cambiar y debo usar tal como está. Esta función toma varios objetos en la forma decómo ajustar una función que solo toma elementos individuales para que tome una lista

oldFunction(object1, object2, object3, ...) 

donde ... hay otros argumentos. Quiero escribir un contenedor para tomar una lista de objetos. Mi idea fue esto

sjb.ListWrapper <- function(myList,...) { 
    lLen <- length(myList) 
    myStr <- "" 
    for(i in 1:lLen) { 
    myStr <- paste(myStr, "myList[[", i , "]],",sep="") 
    } 

    myCode <- paste("oldFunction(", myStr, "...)") 
    eval({myCode}) 
} 

Sin embargo, el tema es que quiero utilizar esto desde Sweave y necesito la salida de oldFunction que se desea imprimir. ¿Cuál es la forma correcta de hacer esto?

Gracias.

Respuesta

12

Usted está buscando do.call:

f <- function(x,y,z)x+y+z 
do.call(f,list(1,2,3)) 
[1] 6 
+0

Gracias. No hay necesidad de reinventar la rueda entonces. :) – stevejb

Cuestiones relacionadas