nogias nogias - 19 days ago 5
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
"ad",15


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"
"21","ad"
"22","ad"
"23","ad"
"24","ad"
"25","ad"
"26","ad"
"27","ad"
"28","ad"
"29","ad"
"30","ad"
"31","ad"
"32","ad"
"33","ad"
"34","ad"
"35","ad"
"36","ad"
"37","ad"
"38","ad"
"39","ad"
"40","ad"

Answer

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]
sep[[2]][10]