2011-09-10 13 views
10

Digamos que tengo una función que toma argumentos variables, como sprintf(). Quiero algo como:¿Se puede pasar un vector a un vararg ?: Vector a sprintf

sprintf("%s %s", "a", "b") 

pero tengo "a" y "b" en un vector c ("a", "b"). Una llamada como

sprintf("%s %s", c("a", "b")) 

producirá un error por falta de argumentos. Muchos idiomas proporcionan una forma de "aplanar" un vector en un argumento de longitud variable. Pero parece que no puedo encontrar la sintaxis para hacerlo en R. ¿Hay alguna manera?

Respuesta

17

Puede utilizar do.call:

vec <- c("a","b") 
do.call(sprintf, c(list("%s %s"), vec)) 
# [1] "a b"