[R] vlookup type function

Petr Savicky savicky at cs.cas.cz
Tue Feb 28 17:28:12 CET 2012


On Tue, Feb 28, 2012 at 09:02:04PM +0530, Priyan Fernando wrote:
> Hi
> 
> I''m looking for an Excel Vlookup type function in R.
> 
> Example:
> list <- c(1,2,3,4,5,6,7)
> base <- c(2.2,3,5.2)
> 
> What I want is, for each number in base, the highest value in list,
> which is equal to or less than the number in base
> 
> So the results would be:
> 
> base         list
> 2.2  ------> 2
> 3    ------> 3
> 5.2  ------>  5

Hi.

If "base" may contain numbers smaller than all numbers in "list",
the the following modification of the previous suggestion does
not generate a warning.

  list <- c(1,2,3,4,5,6,7)
  base <- c(0, 2.2, 3, 5.2, 8)
  unlist(lapply(base, FUN=function(x) max(list[list <= x], -Inf)))

  [1] -Inf    2    3    5    7

Hope this helps.

Petr Savicky.



More information about the R-help mailing list