There are many answers for how to split a dataframe, for example How to split a data frame?
However, I'd like to split a dataframe so that the smaller dataframes contain the last row of the previous dataframe and the first row of the following dataframe.
Here's an example
n <- 1:9
group <- rep(c("a","b","c"), each = 3)
data.frame(n = n, group)
  n  group
1 1     a
2 2     a
3 3     a
4 4     b
5 5     b
6 6     b
7 7     c
8 8     c
9 9     c
I'd like the output to look like:
 d1 <- data.frame(n = 1:4, group = c(rep("a",3),"b"))
 d2 <- data.frame(n = 3:7, group = c("a",rep("b",3),"c"))
 d3 <- data.frame(n = 6:9, group = c("b",rep("c",3)))
 d <- list(d1, d2, d3)
 d
[[1]]
  n group
1 1     a
2 2     a
3 3     a
4 4     b
[[2]]
  n group
1 3     a
2 4     b
3 5     b
4 6     b
5 7     c
[[3]]
  n group
1 6     b
2 7     c
3 8     c
4 9     c
What is an efficient way to accomplish this task?