Expandir los rangos definidos por las columnas "desde" y "hasta"

Tengo un marco de datos que contiene"name" de los presidentes de los Estados Unidos, los años en que comienzan y terminan en el cargo, ("from" y"to" columnas). Aquí hay una muestra:

name           from  to
Bill Clinton   1993 2001
George W. Bush 2001 2009
Barack Obama   2009 2012

... y la salida dedput:

dput(tail(presidents, 3))
structure(list(name = c("Bill Clinton", "George W. Bush", "Barack Obama"
), from = c(1993, 2001, 2009), to = c(2001, 2009, 2012)), .Names = c("name", 
"from", "to"), row.names = 42:44, class = "data.frame")

Quiero crear un marco de datos con dos columnas ("name" y"year"), con una fila por cada año que un presidente estuvo en el cargo. Por lo tanto, necesito crear una secuencia regular con cada año a partir de "from", a"to". Aquí está mi salida:

name           year
Bill Clinton   1993
Bill Clinton   1994
...
Bill Clinton   2000
Bill Clinton   2001
George W. Bush 2001
George W. Bush 2002
... 
George W. Bush 2008
George W. Bush 2009
Barack Obama   2009
Barack Obama   2010
Barack Obama   2011
Barack Obama   2012

Sé que puedo usardata.frame(name = "Bill Clinton", year = seq(1993, 2001)) para expandir las cosas para un solo presidente, pero no puedo averiguar cómo iterar para cada presidente.

¿Cómo hago esto? Siento que debería saber esto, pero me estoy quedando en blanco.

Actualización 1

OK, he intentado ambas soluciones y recibo un error:

foo<-structure(list(name = c("Grover Cleveland", "Benjamin Harrison", "Grover Cleveland"), from = c(1885, 1889, 1893), to = c(1889, 1893, 1897)), .Names = c("name", "from", "to"), row.names = 22:24, class = "data.frame")
ddply(foo, "name", summarise, year = seq(from, to))
Error in seq.default(from, to) : 'from' must be of length 1

Respuestas a la pregunta(5)

Su respuesta a la pregunta