I have a data frame looks like:

```
   X1   X2   X3
1 ### <NA> <NA>
2  aa   bb   cc
3  dd   ee   ff
4 ### <NA> <NA>
5  a1   a2   a3
6  b1   b2   b3
7  g3   h3   k5
8 ### <NA> <NA>
9  k1   k2   k3

```

Is there a way to split it into a list of 3 small data.frame by the ### rows to:

```
[[1]]
   X1   X2   X3
1  aa   bb   cc
2  dd   ee   ff
[[2]]
1  a1   a2   a3
2  b1   b2   b3
3  g3   h3   k5  
[[3]]
1  k1   k2   k3

```

Thanks!

The code to generate the example df:

```
df=data.frame(rbind(c("###",NA,NA),c("aa","bb","cc"),c("dd","ee","ff"),c("###",NA,NA),c("a1","a2","a3"),c("b1","b2","b3"),c("g3","h3","k5"),c("###",NA,NA),c("k1","k2","k3")))

```