Function for median similar to "which.max" and "which.min" / Extracting median rows from a data.frame
I occasionally need to extract specific rows from a data.frame based on values from one of the variables. <code>R</code> has built-in functions for maximum (<code>which.max()</code>) and minimum (<code>which.min()</code>) that allow me to easily extract those rows.

Is there an equivalent for median? Or is my best bet to just write my own function?

Here's an example data.frame and how I would use <code>which.max()</code> and <code>which.min()</code>:


    set.seed(1) # so you can reproduce this example
    dat = data.frame(V1 = 1:10, V2 = rnorm(10), V3 = rnorm(10), 
                     V4 = sample(1:20, 10, replace=T))
    
    # To return the first row, which contains the max value in V4
    dat[which.max(dat$V4), ]
    # To return the seventh row, which contains the min value in V4
    dat[which.min(dat$V4), ]

For this particular example, since there are an even number of observations, I would need to have two rows returned, in this case, rows 2 and 10.
Function for median similar to "which.max" and "which.min" / Extracting median rows from a data.frame
===

I occasionally need to extract specific rows from a data.frame based on values from one of the variables. <code>R</code> has built-in functions for maximum (<code>which.max()</code>) and minimum (<code>which.min()</code>) that allow me to easily extract those rows.

Is there an equivalent for median? Or is my best bet to just write my own function?

Here's an example data.frame and how I would use <code>which.max()</code> and <code>which.min()</code>:


    set.seed(1) # so you can reproduce this example
    dat = data.frame(V1 = 1:10, V2 = rnorm(10), V3 = rnorm(10), 
                     V4 = sample(1:20, 10, replace=T))
    
    # To return the first row, which contains the max value in V4
    dat[which.max(dat$V4), ]
    # To return the seventh row, which contains the min value in V4
    dat[which.min(dat$V4), ]

For this particular example, since there are an even number of observations, I would need to have two rows returned, in this case, rows 2 and 10.