R tapply Function

`tapply()` applies a function to each cell of a ragged array.

```tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
```

• `X`: vector
• `INDEX`: list of one of more factors
• `FUN`: the function
• `simplify`: if true, return an array of scalar, other wise an array of list
`...`

```>Orange    #R built-in dataset, Growth of Orange Trees
```
```   Tree  age circumference
1     1  118            30
2     1  484            58
3     1  664            87
4     1 1004           115
5     1 1231           120
6     1 1372           142
7     1 1582           145
8     2  118            33
9     2  484            69
10    2  664           111
11    2 1004           156
12    2 1231           172
13    2 1372           203
14    2 1582           203
15    3  118            30
16    3  484            51
17    3  664            75
18    3 1004           108
19    3 1231           115
20    3 1372           139
21    3 1582           140
22    4  118            32
23    4  484            62
24    4  664           112
25    4 1004           167
26    4 1231           179
27    4 1372           209
28    4 1582           214
29    5  118            30
30    5  484            49
31    5  664            81
32    5 1004           125
33    5 1231           142
34    5 1372           174
35    5 1582           177
```

Calculate the mean circumference of different Tree groups:
```> tapply(Orange\$circumference,Orange\$Tree,mean)
```
```        3         1         5         2         4
94.00000  99.57143 111.14286 135.28571 139.28571
```

Return a list:
```> tapply(Orange\$circumference,Orange\$Tree,mean,simplify=FALSE)
```
```\$`3`
[1] 94

\$`1`
[1] 99.57143

\$`5`
[1] 111.1429

\$`2`
[1] 135.2857

\$`4`
[1] 139.2857
```