which(vector1 < vector2)

Try this:

vapply(1:6, function(i) max(which(x < i)), double(1))

Are you looking for this?

y<-1:6
max.col(outer(y,x,">"),ties.method="last")*NA^(y<=min(x))
#[1] NA  3  5  5  5  5

A fully vectorized approach:

x <- c(1,3,1,4,2)
y <- c(1,2,3,4,5,6)

f <- function(x, y) {
    xo <- sort(unique(x))
    xi <- cummax(1 + length(x) - match(xo, rev(x)))
    xi[cut(y, c(xo, Inf))]
}
f(x,y)
# [1] NA  3  5  5  5  5

The advantages of full vectorization really start to kick in when both x and y are relatively long and each contains many distinct values:

x <- sample(1:1e4)
y <- 1:1e4

microbenchmark(nicola(), frank(), beauvel(), davida(), hallo(), josho(),times=5)
Unit: milliseconds
      expr        min         lq       mean     median        uq        max neval  cld
  nicola() 4927.45918 4980.67901 5031.84199 4991.38240 5052.6861 5207.00330     5    d
   frank()  513.05769  513.33547  552.29335  517.65783  540.9536  676.46221     5  b  
 beauvel() 1091.93823 1114.84647 1167.10033 1121.58251 1161.3828 1345.75158     5   c 
  davida()  562.71123  575.75352  585.83873  590.90048  597.0284  602.80002     5  b  
   hallo()  559.11618  574.60667  614.62914  624.19570  641.9639  673.26328     5  b  
   josho()   36.22829   36.57181   37.37892   37.52677   37.6373   38.93044     5 a