Expandir intervalos definidos pelas colunas "de" e "para"

Eu tenho um quadro de dados contendo"name" Presidentes dos EUA, os anos em que começam e terminam no cargo, ("from" e"to" colunas). Aqui está uma amostra:

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

... e a saída 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")

Eu quero criar um quadro de dados com duas colunas ("name" e"year"), com uma linha para cada ano em que um presidente estava no cargo. Assim, eu preciso criar uma sequência regular a cada ano a partir de "from", para"to". Aqui está minha saída esperada:

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

Eu sei que eu posso usardata.frame(name = "Bill Clinton", year = seq(1993, 2001)) expandir as coisas para um único presidente, mas não consigo descobrir como fazer uma iteração para cada presidente.

Como eu faço isso? Eu sinto que eu deveria saber disso, mas estou desenhando um espaço em branco.

Atualização 1

OK, eu tentei as duas soluções e estou recebendo um erro:

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

questionAnswers(5)

yourAnswerToTheQuestion