nogias - 1 year ago 144
R Question

# R - what does this tapply() function do?

Please excuse my terrible knowledge of the language - just started looking at it a few hours ago.

I'm trying to understand this code and what it produces but quite unsure. Given that the value of

`inclusions`
is 10, why is the output what it is?

`seps <- tapply(diff, nonCore, function(x) sort(x)[inclusions])`

Outputs

``````"","x"
"ab",23
``````

The value of
`diff`
is

``````"","x"
"1",31
"2",43
"3",37
"4",22
"5",27
"6",13
"7",24
"8",7
"9",26
"10",29
"11",2
"12",15
"13",10
"14",38
"15",23
"16",21
"17",46
"18",10
"19",20
"20",46
"21",20
"22",32
"23",26
"24",11
"25",16
"26",2
"27",13
"28",4
"29",15
"30",18
"31",13
"32",26
"33",1
"34",27
"35",12
"36",10
"37",35
"38",21
"39",9
"40",35
``````

The value of
`nonCore`
is

``````"","x"
"1","ab"
"2","ab"
"3","ab"
"4","ab"
"5","ab"
"6","ab"
"7","ab"
"8","ab"
"9","ab"
"10","ab"
"11","ab"
"12","ab"
"13","ab"
"14","ab"
"15","ab"
"16","ab"
"17","ab"
"18","ab"
"19","ab"
"20","ab"
``````

You should supply the code to construct the vectors `diff` and `nonCore`, as it is those who could help you need to do massive edits...
That said, what is happening is that your sorting the combination of the vectors according to `ab` and and `ad`. ab matches against the first 20 in diff and ad the last 20. Then you just subset the list that is created with the element number that is given by inclusion.
It's the same as running the function without `[inclusion]` and doing this afterwards:
``````sep[[1]][10]