R数据框中的查找值,尽可能简单

Lookup value in R dataframe, as simple as possible

我有这个数据框:

 df <- data.frame(x=c(1,2,3), y=c("a","b","c"))

所以我需要从链接到 x==2 的列 y 中获取值。我看到很多用户使用 merge(),但是否有另一种方法可以简单地做到这一点,只有一个功能?

类似 lookup(df$x, x==2) 的东西以获得价值 "b"

通常,当您有两个数据框要与许多列组合时,merge 是更好的方法。

这里可以使用match

df$y[match(2, df$x)]
#[1] "b"

或者:

df$y[df$x == 2]

如果 df$x 是像 1:3 这样的序列,您可以直接使用 []

df$y[2]
#[1] "b"

或者如果 df$x 是一个带间隙的正整数:

lookup <- NA
lookup[df$x] <- df$y
lookup[2]
#[1] "b"

或者如果 df$x 可以用作 character

lookup <- setNames(df$y, df$x)
lookup["2"]
#  2 
#"b" 

或使用 environment 通过使用它的哈希来加速搜索:

lookup <- list2env(as.list(setNames(df$y, df$x)))
lookup$"2"
#[1] "b"