You can apply the function to each column with sapply:
sapply(iris[1:4], function(x) colMeans(matrix(x, nrow=6)))
      Sepal.Length Sepal.Width Petal.Length Petal.Width
 [1,]     4.950000    3.383333     1.450000   0.2333333
 [2,]     4.850000    3.316667     1.483333   0.2000000
 [3,]     5.183333    3.633333     1.316667   0.2500000
...
[23,]     6.533333    2.950000     5.583333   1.9333333
[24,]     6.516667    3.033333     5.316667   2.1333333
[25,]     6.383333    3.033333     5.266667   2.1333333
Compare with creating the means of the first six rows manually:
colMeans(iris[1:6, 1:4])
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
   4.9500000    3.3833333    1.4500000    0.2333333 
You can also do this with aggregate given the proper by argument:
aggregate(iris[1:4], by=list((seq(nrow(iris))-1) %/% 6), FUN=mean)
   Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width
1        0     4.950000    3.383333     1.450000   0.2333333
2        1     4.850000    3.316667     1.483333   0.2000000
3        2     5.183333    3.633333     1.316667   0.2500000
...
This works by creating a vector which identifies the groups to be averaged:
(seq(nrow(iris))-1) %/% 6
  [1]  0  0  0  0  0  0  1  1  1  1  1  1  2  2  2  2  2  2  3  3  3  3  3  3  4  4  4  4  4  4  5  5  5  5  5  5  6  6  6  6  6  6  7  7  7  7  7  7  8  8  8  8
 [53]  8  8  9  9  9  9  9  9 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 14 14 14 14 14 14 15 15 15 15 15 15 16 16 16 16 16 16 17 17
[105] 17 17 17 17 18 18 18 18 18 18 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23 24 24 24 24 24 24
The sapply solution returns a matrix, whereas the aggregate solution returns a data frame, in case one is more desirable.