Rozszerz zakresy zdefiniowane przez kolumny „z” i „do”

Mam ramkę danych zawierającą"name" prezydentów USA, lata, kiedy zaczynają i kończą w biurze, ("from" i"to" kolumny). Oto przykład:

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

... i wyjście zdput:

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")

Chcę utworzyć ramkę danych z dwiema kolumnami ("name" i"year"), z rzędu za każdy rok, w którym prezydent sprawował urząd. Dlatego muszę tworzyć regularną sekwencję z każdego roku odfrom", do"to". Oto moje oczekiwane:

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

Wiem, że mogę użyćdata.frame(name = "Bill Clinton", year = seq(1993, 2001)) rozwinąć rzeczy dla jednego prezydenta, ale nie mogę wymyślić, jak powtarzać dla każdego prezydenta.

Jak mam to zrobic? Czuję, że powinienem to wiedzieć, ale rysuję puste.

Aktualizacja 1

OK, wypróbowałem oba rozwiązania i pojawia się błąd:

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