Poster, değerlere bakmayı sormadı exact=FALSE, ancak bunu kendi referansım ve muhtemelen başkaları için bir cevap olarak ekliyorum.
Kategorik değerler arıyorsanız, diğer cevapları kullanın.
Excel'in vlookupayrıca sayısal değerleri yaklaşık olarak 4. bağımsız değişkenle (1) eşleştirmenize izin verir match=TRUE. match=TRUEBir termometrede değerlere bakmayı düşünüyorum . Varsayılan değer YANLIŞ'tır ve kategorik değerler için mükemmeldir.
Yaklaşık olarak eşleştirmek istiyorsanız (bir arama yapın), R'nin findInterval(adından da anlaşılacağı gibi) sürekli sayısal değerinizi içeren aralığı / bin'i bulacak adlı bir işlevi vardır .
Ancak, findIntervalbirkaç değer için istediğinizi varsayalım. Bir döngü yazabilir veya uygulama işlevi kullanabilirsiniz. Bununla birlikte, DIY vektörleştirilmiş bir yaklaşım benimsemeyi daha verimli buldum.
Diyelim ki x ve y tarafından indekslenmiş bir değerler ızgaranız var:
grid <- list(x = c(-87.727, -87.723, -87.719, -87.715, -87.711),
y = c(41.836, 41.839, 41.843, 41.847, 41.851),
z = (matrix(data = c(-3.428, -3.722, -3.061, -2.554, -2.362,
-3.034, -3.925, -3.639, -3.357, -3.283,
-0.152, -1.688, -2.765, -3.084, -2.742,
1.973, 1.193, -0.354, -1.682, -1.803,
0.998, 2.863, 3.224, 1.541, -0.044),
nrow = 5, ncol = 5)))
ve x ve y'ye göre aramak istediğiniz bazı değerlere sahipsiniz:
df <- data.frame(x = c(-87.723, -87.712, -87.726, -87.719, -87.722, -87.722),
y = c(41.84, 41.842, 41.844, 41.849, 41.838, 41.842),
id = c("a", "b", "c", "d", "e", "f")
İşte görselleştirilmiş örnek:
contour(grid)
points(df$x, df$y, pch=df$id, col="blue", cex=1.2)

Bu tür formülle x aralıklarını ve y aralıklarını bulabilirsiniz:
xrng <- range(grid$x)
xbins <- length(grid$x) -1
yrng <- range(grid$y)
ybins <- length(grid$y) -1
df$ix <- trunc( (df$x - min(xrng)) / diff(xrng) * (xbins)) + 1
df$iy <- trunc( (df$y - min(yrng)) / diff(yrng) * (ybins)) + 1
Bunu bir adım daha ileri götürebilir ve aşağıdaki gridgibi z değerleri üzerinde (basit) bir enterpolasyon yapabilirsiniz :
df$z <- with(df, (grid$z[cbind(ix, iy)] +
grid$z[cbind(ix + 1, iy)] +
grid$z[cbind(ix, iy + 1)] +
grid$z[cbind(ix + 1, iy + 1)]) / 4)
Bu size şu değerleri verir:
contour(grid, xlim = range(c(grid$x, df$x)), ylim = range(c(grid$y, df$y)))
points(df$x, df$y, pch=df$id, col="blue", cex=1.2)
text(df$x + .001, df$y, lab=round(df$z, 2), col="blue", cex=1)

df
İx ve iy'in bir döngü kullanılarak da bulunabileceğine dikkat edin findInterval, örneğin burada ikinci satır için bir örnek var
findInterval(df$x[2], grid$x)
findInterval(df$y[2], grid$y)
Hangi maçlarda ixve iyiçindedf[2]
Dipnot: (1) vlookup'ın dördüncü argümanı daha önce "eşleşme" olarak adlandırılıyordu, ancak şeridi tanıttıktan sonra "[aralık_bak]" olarak yeniden adlandırıldı.