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

问题描述 投票:0回答:2

我有此数据框:

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

所以我需要从链接到y的列x==2中获取值。我已经看到许多用户使用merge(),但是还有另一种方法可以通过简单的方法,仅使用一个功能吗?

类似于lookup(df$x, x==2)获得值“ b”的事物

r merge lookup
2个回答
3
投票

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

在这里您可以使用match

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

或:

df$y[df$x == 2]

0
投票

如果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"
    
© www.soinside.com 2019 - 2024. All rights reserved.